2013-05-09 59 views
0

我正在使用Javascript正则表达式,但这与我对其工作原理的理解相冲突。与Javascript正则表达式的理解发生冲突

表达是这样的:/^[0-9]+$/

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

任何人都可以在此澄清我吗?谢谢。

回答

3

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

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

会让你了解它在做什么。

+0

好了,所以它不检查数字在开始和结束时分别,而是'从开始到结束'? – 2013-05-09 22:44:00

+0

不,这意味着在行首,应该有一个或多个数字字符,然后应该有行结尾 – 2013-05-09 22:45:48

+0

啊!好的!谢谢。 – 2013-05-09 22:48:40

1

你表达/^[0-9]+$/说...

  • ^说: “开始的字符串的开头”
  • [0-9]说: “匹配字符串必须在下一个包含许多”
  • +说,“该数字可以重复任意次数,但必须至少出现一次“
  • $说,”该字符串必须结束“

既然你没有指定中间可能有字符或任何东西,你的正则表达式就不会匹配它。如果你想“打头的编号和数字结尾”尝试...

/^[0-9](.*[0-9])?$/它说

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

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