javascript - RegExp - 如何检查字符串中的两个括号

标签 javascript regex

我想知道如果有两个括号(开始和结束),我怎样才能匹配文本。

目前,我的 RegExp 是:^1?\s?\(?\d{3}\)?[-\s]?\d{3}[-\s]?\d{4 }$.

它检查美国有效号码,但是 \(?\)? 有所不同。如果有 0 个或 2 个,它应该匹配文本。


一些测试:

1 555)555-5555 - 错误

555)-555-5555 -

(555-555-5555 - 错误

现在,它们都返回相同的结果 - true


这是它的链接: https://regexr.com/3kjei (^ 是因为我只需要选择一个没有换行符的字符串,请从中删除另外 2 个字符串,以便您可以看到它返回 true。此链接中的所有字符串都应返回 true,只需检查一下,以便文本编辑器中只有一个字符串)。

谢谢

最佳答案

你可以使用

^(?:1\s?)?(?:\(\d{3}\)|\d{3})[-\s]?\d{3}[-\s]?\d{4}$

参见 regex demo .

请注意,正则表达式中的 ^1?\s? 允许在开头使用一个空格,这就是为什么我建议 ^(?:1\s?)? - 以 1 开头的可选序列,可选地后跟空格。

\(?\d{3}\)? 部分替换为 (?:\(\d{3}\)|\d{3})-一个non-capturing group匹配 (+3 digits+) 或 3 位数字(因此,无法匹配 (123 or 123)`)。

详情

  • ^ - 字符串的开始
  • (?:1\s?)? - 1 出现 1 次或 0 次,可选地后跟 1 个空白字符
  • (?:\(\d{3}\)|\d{3}) - (, 3 digits, ) > 或仅 3 位数字
  • [-\s]? - 可选的 - 或空格
  • \d{3} - 3 位数字
  • [-\s]?- 可选的 - 或空格
  • \d{4} - 4 位数字
  • $ - 字符串结尾。

关于javascript - RegExp - 如何检查字符串中的两个括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48720737/

相关文章:

javascript - JQuery:$(this).data ('pinned' ) 实际上做了什么?

javascript - 从最高处开始对所有 div 应用 z-index

javascript - 如何用javascript中的分割值进行分割?

regex - 在groovy中使用正则表达式

javascript - 单击建议时防止关闭最新的 Twitter 类型?

javascript - 尝试使用 Promise 删除记录

Python - 使用正则表达式更新 2 个节点之间的 xml 值 - re.sub 不起作用

javascript - 需要帮助让正则表达式获取两个不相关的字符串之间的内容

Javascript IE 转换矩阵计算

python - 如何提取匹配字符串之间的文本,包括匹配字符串和行