我想知道如果有两个括号(开始和结束),我怎样才能匹配文本。
目前,我的 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/