与理解Javascript正则表达式冲突

Conflict with understanding a Javascript regular expression

本文关键字:正则表达式 冲突 Javascript      更新时间:2023-09-26

我正在使用一个Javascript正则表达式,但这与我对它如何工作的理解相冲突。

表达式如下:/^[0-9]+$/

所以,如果我测试这个正则表达式,比如说一个文本框的值,我所理解的是,它将检查值是否至少以一个数字开始,并以至少一个数字结束。然而,实际情况是,只有当整个值为数字时,测试才会成功。如果我在两者之间放一个字母,我知道这应该使测试成功,后者是失败的。

有谁能给我解释一下吗?谢谢。

是,它表示从开始到结束的一个或多个数字的序列。

^[0-9].+[0-9]$

会让你明白它在做什么

你的表达式/^[0-9]+$/说…

  • ^表示"从字符串的开头开始"
  • [0-9]表示"匹配字符串必须包含一个数字"
  • +说,"数字可以重复任何次数,但必须至少出现一次"
  • $说,"字符串必须结束"

由于您没有指定中间可以有字符或任何东西,因此您的regex将无法匹配它。如果你想要"以数字开始,以数字结束",请尝试…

/^[0-9](.*[0-9])?$/显示

  • ^开始于字符串
  • 的开头
  • (启动一个组-但现在忽略这个…稍后会变得明显
  • [0-9]后面跟着一个数字
  • .后面跟着任意字符
  • *,让之前指定的"任意字符"立即重复0次或多次
  • [0-9]后面跟着一个数字
  • )?,但允许"任何后跟数字的字符"存在或不存在。这允许我们只有一个数字作为匹配字符串。
  • $和结束字符串

或者你可以使用/^[0-9]([0-9a-zA-Z]*[0-9])?$/如果你想限制数字和字母