regex - 正则表达式没有捕捉到连续的信用卡号
问题描述
如果所有 16 位卡号都没有或不匹配,则我的正则表达式匹配号码有<space>
或它有。"-"
<space>
"-"
(4\d{3}[\s\-\\]\d{4}[\s\-\\]\d{4}[\s\-\\]\d{4})
它匹配4444-0000-0000 0000
但它不匹配`4444000000000000
解决方案
?
通过在字符类之后编码 a 来使分隔符可选:
\b(4\d{3}[\s-]?\d{4}[\s-]?\d{4}[\s-]?\d{4})\b
见现场演示。
\b
我在两端添加了单词边界,例如 40001111222233338 的前 16 位不匹配。
[\s-]?\d{4}
顺便说一句,您可以通过重复3 次来更简短地对其进行编码,如下所示:
\b(4\d{3}([\s-]?\d{4}){3})\b
推荐阅读
- junit - 如何模拟链式方法?
- java - 无法在 Android 中捕获图像
- angularjs - Angularjs:为什么当我点击表格行时它会在 ng-if 中执行函数?
- google-cloud-platform - 创建新的计算实例失败,出现“asia-south1-c”的未知区域错误
- php - 我想在 php 类中使用函数。如何使用它们?
- c# - 发布后找不到图标?
- wordpress - Wordpress:无法修改标题信息 - 输出已发送的标题从formatting.php第5652行开始
- reactjs - 如何在反应上创建抽象状态值
- android - 如何在 Nox 应用播放器中更改默认地理位置
- flutter - 当类用作值而不是字符串时,颤动下拉失败