当前位置: 首页 > 知识库问答 >
问题:

用于验证JavaScript中负数的正则表达式[已关闭]

乜坚成
2023-03-14

我正在尝试实现一个用于验证负数的正则表达式。这是我的尝试。

HTML

<input type="number" id="inC" />
<div id="outC">

</div>

js

debugger;
const failedInput = document.getElementById("inC");
const textOut = document.getElementById("outC");
failedInput.addEventListener("input", function(e) {
  const ct = e.currentTarget;
  textOut.innerText = ct.value;
  if (/^((\-(\d*))$/.test(ct.value)) {

  } else {
    ct.value = "";
  }
});

JSFIDLE

我希望输入会删除除负数以外的所有内容。但出于某些原因,正数也是允许的。我错过了什么?

我希望我的输入只接受负整数(最好不接受零)。

共有3个答案

督嘉言
2023-03-14

试试这个:它只能接受负数。也没有零。希望这有所帮助。

/^-[1-9]+[0-9]*$/
牛越
2023-03-14

要允许负数而不匹配零,可以使用:

^-[1-9]\d*$

解释

  • ^断言字符串的开头

正则表达式演示

const strings = [
  "100",
  "10",
  "1",
  "0",
  "-0",
  "-1",
  "-2",
  "-100"
];
let pattern = /^-[1-9]\d*$/;

strings.forEach((s) => {
  console.log(s + " ==> " + pattern.test(s));
});
赵俊侠
2023-03-14

您的正则表达式中缺少一个结束参数。您的样本最初给出了错误:

语法错误:未终止的插入语

你的正则表达式

/^((\-(\d*))$/

这是三个开始的括号,两个结束的括号。

它应该是:

/^(\-(\d*))$/

看看:添加了收尾paren,现在它像预期的那样运行。

JSFIDLE示例已修复

      if (/^(\-(\d*))$/.test(ct.value)) {
 类似资料:
  • 我需要有关验证电话号码的正则表达式行的帮助,它如下所示: 这些是它验证的格式: 我想验证如下数字: +263 772 485 384 773456284 0773456284 大部分是国际号码

  • 问题内容: 有人有用于验证网址的正则表达式(不是在文本段落中找到它们)吗?最好使用JavaScript代码段。 问题答案: 实际的URL语法非常复杂,并且很难在正则表达式中表示。那里大多数看起来简单的正则表达式都会给出许多错误的否定和错误的肯定,但即使最终的结果并不好。 加上这些天,您通常都希望允许使用IRI和老式的URI,因此我们可以链接到有效地址,例如: 我只会做简​​单的检查:它是否以一个已

  • 问题内容: 谁能帮助我创建用于密码验证的正则表达式。 条件为“密码必须包含8个字符和至少一个数字,一个字母和一个唯一字符,例如 问题答案:

  • 我希望在我的应用程序中接受带有字母和连字符或破折号的名称,我的代码基于我在这里找到的答案并编码为: 唯一的问题是它接受连字符作为我不想要的第一个字母(甚至是多个字母)。谢谢

  • 问题内容: 我正在尝试创建一个正则表达式来根据以下条件验证用户名: 仅包含 字母数字 字符, 下划线 和 点 。 下划线和点号不能位于用户名(例如/ / / )的 末尾 或 开头 。 下划线和点不能 彼此相邻 (例如)。 下划线或点不能被多次使用 的行中 (例如,/ )。 字符数必须在8到20之间。 到目前为止,这是我所做的;听起来它强制执行 除了第5条规则以外的 所有标准规则。我不知道如何添加第

  • 我不擅长正则表达式。我需要验证密码是否正确。 条件: 您的密码长度可以是8-32个字符,并且必须包括至少两个以下字符: 至少一个字母(大写或小写) 至少一个数字 至少一个特殊字符 正则表达式中的正则表达式允许至少一个特殊字符,一个大写字母,一个小写字母(按任何顺序)需要所有三个,并且对长度没有上限,因此看起来我需要修改Tim Pietzcker的解决方案,这是 <代码>^(? =.{ 8,})(?

  • 问题内容: 我正在尝试使用以下规则在Java中使用用户名链: 长度> = 3 有效字符:az,AZ,0-9,点,破折号和下划线。 有人可以帮我提供正则表达式吗? 问题答案: 试试这个正则表达式:

  • 问题内容: 我想要一个只接受数字和点的Java正则表达式。 例如, 点不应位于开始位置或结束位置。 问题答案: 我想这就是你想要的: 说明:接受以点分隔的数字;它以数字开头和结尾;一个数字可以有多个数字;一个不带点的数字也可以接受。 没有多个数字的变体: 需要至少一个点的变体: 不要忘记在Java中必须转义\符号,因此代码如下所示: