-1

我想为下一个要求构建正确的正则表达式:字符串必须仅包含 10 个数字或 10 个数字逗号 10 个数字(在第二个变体中可以是逗号前后的空格)......而且我不能构建这个 :(
我的变体是这样的,但它是不正确的:

([0-9]{10})|([0-9]{10}\s*\,\s*[0-9]{10})

对不起我的英语=)

UPD:谢谢大家的帮助!

4

6 回答 6

2

您的模式是正确的,但有一个小缺陷。要记住的规则是:

如果您的模式是其他两种模式的 OR ( |),其中一种是另一种的子模式,请将最大的模式放在首位。

因此,通过重新排序您已有的内容,我们将获得:

^([0-9]{10}\s*\,\s*[0-9]{10})$|^([0-9]{10})$

添加^$仅包括全行匹配。

于 2013-04-12T14:31:28.453 回答
1

您必须匹配字符串的开头和结尾。

/^\d{10}( *, *\d{10})?$/

试试看:

/^\d{10}( *, *\d{10})?$/.test(your_string);
于 2013-04-12T14:28:04.213 回答
1

尝试这个

(^\d{10}$|^\d{10} ?, ?\d{10}$)
于 2013-04-12T14:37:16.243 回答
1

尝试这个:

^\d{10}( ?, ?\d{10})?$

Using?使前面的表达式可选

于 2013-04-12T14:25:46.803 回答
1

这是您需要的正则表达式:

\d{10}( ?, ?\d{10})?
于 2013-04-12T14:27:08.137 回答
1
^\d{10}(?: ?, ?\d{10})?$
  • ^...$= 在字符串的开头和结尾之间
  • \d{10}= 10 位数
  • ?= 可选空间
  • (?:)= 非=捕获组
于 2013-04-12T14:31:17.417 回答