我正在编写一个 java 脚本,我想在其中验证以下格式的数字:
555-555-5555
(555)-555-5555
为此,我使用以下正则表达式:
/\(?(\d{3}\)?)[- ]?(\d{3})[- ]?(\d{4})/
但是下面的表达式是错误的:
(555 - 555 5555
我想制作这个正则表达式来检查左括号是否存在,然后右括号必须存在,反之亦然。我应该对我的 RE 做哪些改变才能实现我的目标?
最佳答案
由于大括号是可选的 ?
- 出现零次或一次,正则表达式允许使用 (
和/或 )
大括号。正则表达式中的 OR 条件可用于匹配三个数字或括号中的三个数字。
^(\(\d{3}\)|\d{3})[- ]?(\d{3})[- ]?(\d{4})$
(\(\d{3}\)|\d{3})
^ ^ : Group
^^ ^^ : Matches ( & ) respectively
^ : OR condition in regex
^^^^^ ^^^^^ : Match three digits
input:valid {
color: green;
}
input:invalid {
color: red;
font-weight: bold;
}
<input pattern="(\(\d{3}\)|\d{3})[- ]?(\d{3})[- ]?(\d{4})" />
关于javascript - 如何使用正则表达式检查一对括号条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39991011/