与理解Javascript正则表达式冲突

时间:2013-05-09 22:36:21

标签: javascript regex conflict

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

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

所以,如果我测试这个正则表达式,比如一个文本框的值,我理解的是它将检查该值是否以至少一个数字开头,并以至少一个数字结束。然而,正在发生的事情是,只有当整个值是数字时,测试才会成功。如果我在其间放置一个字母表,我理解应该使测试成功,后者失败。

有人可以澄清我吗?感谢。

2 个答案:

答案 0 :(得分:3)

是的,它表示从开始到结束的一系列1位或更多位数。

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

会让你了解它的作用。

答案 1 :(得分:1)

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

  • ^说“从字符串的开头开始”
  • [0-9]说“匹配的字符串必须包含数字”
  • +说,“这个数字可能会重复多次,但必须至少出现一次”
  • $说,“字符串必须结束”

由于您没有在中间指定可能存在字符或任何内容,因此您的正则表达式将不匹配。如果你想“以数字开头,以数字结尾”,试试......

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

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

如果您想限制数字和字母

,也可以使用/^[0-9]([0-9a-zA-Z]*[0-9])?$/