Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 要求相同重复符号的信用卡正则表达式_Javascript_Regex - Fatal编程技术网

Javascript 要求相同重复符号的信用卡正则表达式

Javascript 要求相同重复符号的信用卡正则表达式,javascript,regex,Javascript,Regex,我正在努力寻找并想出一个不允许信用卡上出现不一致符号的正则表达式 \d{4}[\s\-]*\d{4}[\s\-]*\d{4}[\s\-]*\d{4} 例如,上面的正则表达式允许下面的通过。最后一个是有问题的,因为它包含“-”和“”以及“”。如何生成一个要求所有符号(“-”或“或”)一致的正则表达式?i、 e.只允许前3条语句,不允许最后一条语句 12341234112341234、1234-1234-1234-1234、1234 1234 1234、1234-12341234 1234您可以使

我正在努力寻找并想出一个不允许信用卡上出现不一致符号的正则表达式

\d{4}[\s\-]*\d{4}[\s\-]*\d{4}[\s\-]*\d{4}
例如,上面的正则表达式允许下面的通过。最后一个是有问题的,因为它包含“-”和“”以及“”。如何生成一个要求所有符号(“-”或“或”)一致的正则表达式?i、 e.只允许前3条语句,不允许最后一条语句


12341234112341234、1234-1234-1234-1234、1234 1234 1234、1234-12341234 1234

您可以使用捕获组“记住”第一种情况下的分隔符,并确保其他情况下也使用它

最后一个正则表达式是:
\d{4}([\s\-])*\d{4}\1*\d{4}\1*\d{4}

第一个
[\s\-]
周围的
()
启动捕获组;稍后的
\1
指示使用与先前捕获的值相同的值

在这里看到它的作用

编辑:根据评论,更好的解决方案可能是
\d{4}([\s\-]?)\d{4}\1\d{4}\1\d{4}
,具体取决于您的需求。这一个确保了
-
s和
s不混合,并且只有0或1个分隔符。

1*不太正确,这样1234 12341234 1234就足够通过空气了!根据你所追求的具体行为,
\d{4}([\s\-]*)\d{4}\1\d{4}\1\d{4}
可能更适合我想回答的(
*
在组内),但你更快了:-)@Alex非常感谢!我一直在努力寻找答案。我认为\d{4}([\s\-]*)\d{4}\1\d{4}\1\d{4}对于信用卡来说是一个更好的答案,如果我可以补充的话,将grp中的
*
更改为
,可能更完整,因为前者导致允许使用1234--1234--1234--1234。干杯:)你确定你的意思是
[\s\-]*
,允许“-”或“--”。可能您需要
[\s\-]?
。如果您不想匹配换行符和单个空格,请使用制表符或连字符
\b\d{4}([\t-]?)\d{4}\1\d{4}\1\d{4}\b