7

我正在尝试制作一个 javascript 正则表达式来匹配:

  • 要求:9 个或更多数字。
  • 可选:破折号、正斜杠、加号和空格字符。
  • 禁止:任何其他字符

到目前为止我有

^[0-9-+\/\s]{9,}$

唯一的问题(我认为)是它计算允许的非数字字符以达到最小 9。

我怎样才能修改它,使它只计算达到最小 9 的数字?

4

4 回答 4

8

如果您想在单个 RE 中解决此问题(不一定推荐,但有时很有用):

^[-+\/\s]*([0-9][-+\/\s]*){9,}$

或者,如果您希望第一个和最后一个字符是数字:

^[0-9](^[-+\/\s]*[0-9]){8,}$

那是:一个数字,后面跟着八个或更多的可选字符,每个都以一个数字结尾。

于 2013-05-15T11:45:16.077 回答
3

您可以使用前瞻检查任何地方是否有 9 位或更多位

^(?=(\D*\d){9,})[\d/+ -]+$
 --------------
         |
         |->match further only if there are 9 or more digits anywhere

或者

^([/+ -]*\d){9,}[/+ -]*$
于 2013-05-15T11:47:20.653 回答
1

^([0-9][-+\/\s]*){9,}$应该做。

于 2013-05-15T11:45:00.173 回答
0

它很简单,具有前瞻性

试试这个模式:

^(?=([^\d]*\d){9,})[0-9-+\/\s]*$
于 2013-05-15T12:21:08.347 回答