javascript - 翻译正则表达式

标签 javascript regex bash grep

我想翻译这个JS正则表达式

^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7, 10}$

在 grep 中使用。以下所有电话号码均与其匹配:

+79261234567
89261234567
79261234567
+7 926 123 45 67
8(926)123-45-67
123-45-67
9261234567
79261234567
(495)1234567
(495) 123 45 67
89261234567
8-926-123-45-67
8 927 1234 234
8 927 12 12 888
8 927 12 555 12
8 927 123 8 123

我尝试了很多变体,但没有一个适合我。

最佳答案

我还没有测试过你的模式,但需要考虑的一些事情是:

[\- ] 应改为 [- ][ -]

(in a character class [] escaping dash is unnecessary if it's first or last).

[\d] 可能会失败,因此请使用 [0-9][:digit:]

所以这给你留下了:

grep -E "^((8|\+7)[ -]?)?(\(?[0-9]{3}\)?[ -]?)?[0-9 -]{7,10}$" file

egrep:

egrep "^((8|\+7)[ -]?)?(\(?[0-9]{3}\)?[ -]?)?[0-9 -]{7,10}$" file

关于javascript - 翻译正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40539885/

相关文章:

c# - 正则表达式匹配点分隔列表,末尾没有点,并允许末尾有星号

bash - 如何在 Bash 中将字符串转换为整数?

bash - 从 postgres 函数/过程/触发器执行 Bash 脚本(Shell 脚本)

javascript - 无法访问 .beforeEach() 中的 Buefy 组件

javascript - HTMLUnit 不等待 JavaScript

regex - 使用 Henry Spencer 正则表达式库时 (.+_)* 是什么意思?

linux - 如何将带空格的参数传递给 sed 命令?

Javascript:在页面加载时打印 iframe 的内容不起作用

javascript - 如何以及在何处解析具有标准化状态的 React/Redux 应用程序中对其他实体的引用

javascript - 已转义但仍为 'Uncaught SyntaxError: Invalid regular expression:regex: Unterminated group'