javascript - 正则表达式匹配任何一组数字,除了以 7 开头的 10 位数字

标签 javascript regex

我想捕获除以 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/

相关文章:

regex - 当文本没有 "[^<]*<\\?"时,为什么正则表达式 "<"表现出指数时间?

php - 正则表达式匹配电报用户名并在 PHP 中删除整行

javascript - 使用Javascript获取容器onclick中的按钮滚动高度

javascript - 创建正则表达式匹配数组(多行,javascript)

javascript - 如果一个函数在另一个函数内部执行,它会立即符合回调函数的条件吗?

javascript - 如何使用 jQuery 获取用户选择的文件类型?

javascript - 我想找到数字 - 包括点和逗号 - 但正则表达式在 javascript 中不起作用

regex -\w 不匹配 Perl 中的西里尔字符

mysql - MySQL 语句中的正则表达式问题

javascript - 如何循环嵌套子结构?