我想为下一个要求构建正确的正则表达式:字符串必须仅包含 10 个数字或 10 个数字逗号 10 个数字(在第二个变体中可以是逗号前后的空格)......而且我不能构建这个 :(
我的变体是这样的,但它是不正确的:
([0-9]{10})|([0-9]{10}\s*\,\s*[0-9]{10})
对不起我的英语=)
UPD:谢谢大家的帮助!
您的模式是正确的,但有一个小缺陷。要记住的规则是:
如果您的模式是其他两种模式的 OR (
|
),其中一种是另一种的子模式,请将最大的模式放在首位。
因此,通过重新排序您已有的内容,我们将获得:
^([0-9]{10}\s*\,\s*[0-9]{10})$|^([0-9]{10})$
添加^
并$
仅包括全行匹配。
您必须匹配字符串的开头和结尾。
/^\d{10}( *, *\d{10})?$/
试试看:
/^\d{10}( *, *\d{10})?$/.test(your_string);
尝试这个
(^\d{10}$|^\d{10} ?, ?\d{10}$)
尝试这个:
^\d{10}( ?, ?\d{10})?$
Using?
使前面的表达式可选
这是您需要的正则表达式:
\d{10}( ?, ?\d{10})?
^\d{10}(?: ?, ?\d{10})?$
^...$
= 在字符串的开头和结尾之间\d{10}
= 10 位数?
= 可选空间(?:)
= 非=捕获组