我想捕获除以 7 开头的 10 位数字之外的所有数字(任何数字)。
71234567890 - 应该匹配
7123456789 - 不应该匹配
1234567890-应该匹配
最佳答案
使用模式
/7\d{9}|(\d+)/
^^^^^^ MATCH 10-DIGIT NUMBER STARTING WITH SEVEN, DO NOT CAPTURE
^ --OR--
^^^^^ MATCH OTHER SEQUENCES OF DIGITS AND DO CAPTURE
这将匹配以 7 开头但不捕获它的 10 位数字;否则,它将匹配数字序列并捕获它。
现在
'7123456789'.match(regexp)
["7123456789", undefined]
'1234567890'.match(regexp)
["1234567890", "1234567890"]
换句话说,捕获的字符串将在 match
返回的数组的第二个元素中找到。
如果你想把它锚定到字符串的开头和结尾,那么
/^7\d{9}$|(^\d+$)/
您也可以按照评论中的建议,使用负面的前瞻性来做到这一点,但这里不需要,对于刚开始使用正则表达式的人来说可能有点牵强。
关于javascript - 正则表达式匹配任何一组数字,除了以 7 开头的 10 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36346650/