0

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

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

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

有人可以澄清一下吗?谢谢。

4

2 回答 2

3

是的,这意味着从开始到结束的一系列 1 个或多个数字。

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

会让你理解它在做什么。

于 2013-05-09T22:37:44.880 回答
1

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

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

由于您没有指定中间可能有字符 - 或任何东西 - 您的正则表达式不会匹配它。如果您想要“以数字开头并以数字结尾”,请尝试...

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

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

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

于 2013-05-09T22:46:34.417 回答