Javascript 如何使用正则表达式检查括号对条件?
我正在编写一个java脚本,我想在其中验证以下格式的数字:Javascript 如何使用正则表达式检查括号对条件?,javascript,regex,Javascript,Regex,我正在编写一个java脚本,我想在其中验证以下格式的数字: 555-555-5555 (555)-555-5555 为此,我使用以下正则表达式: /\(?(\d{3}\)?)[- ]?(\d{3})[- ]?(\d{4})/ 但这对于以下错误的表达是正确的: (555 - 555 5555 我想用这个正则表达式来检查是否存在开始括号,然后必须存在结束括号,反之亦然。我应该在RE中做些什么改变以实现我的目标 对于正则表达式,没有一种优雅的方法可以做到这一点,只要重复一下就行了 /(?:\(
555-555-5555
(555)-555-5555
为此,我使用以下正则表达式:
/\(?(\d{3}\)?)[- ]?(\d{3})[- ]?(\d{4})/
但这对于以下错误的表达是正确的:
(555 - 555 5555
我想用这个正则表达式来检查是否存在开始括号,然后必须存在结束括号,反之亦然。我应该在RE中做些什么改变以实现我的目标 对于正则表达式,没有一种优雅的方法可以做到这一点,只要重复一下就行了
/(?:\((\d{3})\)|(\d{3}))[- ]?(\d{3})[- ]?(\d{4})/
变化是我用(?:\(\d{3})\)(\d{3})替换了(?:\(\d{3})\)\124;(\ d{3}))
。初始的?:
导致不捕获总体组,然后您有\((\d{3})\)
或(\d{3})
由于空的捕获组以空字符串的形式给出,因此您可以使用$1$2
获取前三个数字的值,无论是捕获它们的第一个还是第二个组,使用regex并不是一种很好的方法,只需重复一下即可
/(?:\((\d{3})\)|(\d{3}))[- ]?(\d{3})[- ]?(\d{4})/
变化是我用(?:\(\d{3})\)(\d{3})替换了(?:\(\d{3})\)\124;(\ d{3}))
。初始的?:
导致不捕获总体组,然后您有\((\d{3})\)
或(\d{3})
由于空的捕获组作为空字符串给出,因此您可以使用$1$2
获取前三个数字的值-无论捕获它们的是第一个还是第二个组-因为大括号是可选的?
-零或一次出现,正则表达式允许(
和/或)
大括号。正则表达式中的OR条件可用于匹配三个数字或括号中的三个数字
^(\(\d{3}\)|\d{3})[- ]?(\d{3})[- ]?(\d{4})$
输入:有效{
颜色:绿色;
}
输入:无效{
颜色:红色;
字体大小:粗体;
}
由于大括号是可选的?
-零或一次出现,正则表达式允许(
和/或)
大括号。正则表达式中的OR条件可用于匹配三个数字或括号中的三个数字
^(\(\d{3}\)|\d{3})[- ]?(\d{3})[- ]?(\d{4})$
输入:有效{
颜色:绿色;
}
输入:无效{
颜色:红色;
字体大小:粗体;
}
您可以使用RegExp
/^(\(\d{3}\)\d{3}-\d{3}-\d{4}$/
匹配括号内或不带括号的三位数字,例如,“(555)”
或“555”
,在字符串开头,后跟三位数字,后跟“
”
后接四位数字,后接输入结束
var re=/^(\(\d{3}\)^\d{3})-\d{3}-\d{4}$/;
console.log(重新测试(“(555-555-5555”);//错误
console.log(重新测试(“555-555-5555”);//true
console.log(re.test(“(555)-555-5555”);//true
您可以使用RegExp
/^(\(\d{3})\d{3})-\d{3}-\d{4}$/
来匹配括号内或不带括号的三位数字,例如,“(555)”
或“555”
,在字符串开头,后跟,,,“-”
后接四位数字,后接输入结束
var re=/^(\(\d{3}\)^\d{3})-\d{3}-\d{4}$/;
console.log(重新测试(“(555-555-5555”);//错误
console.log(重新测试(“555-555-5555”);//true
console.log(re.test(“(555)-555-5555”);//true
在晚会上很晚了,但我认为这是freecodecamp的挑战之一。因此,另外,如果您想检查代码,那么这里是我的解决方案版本
let telRegex = /^\+?[1{1}]?[- ]?(\(\d{3}\)|\d{3})[- ]?(\d{3})[- ]?(\d{4})$/;
它将检查指定的代码编号(这里挑战的代码是1)和电话号码前面的+附加检查。在聚会中很晚了,但我认为这是freecodecamp挑战之一。因此,如果您想检查代码,这里是我的解决方案版本
let telRegex = /^\+?[1{1}]?[- ]?(\(\d{3}\)|\d{3})[- ]?(\d{3})[- ]?(\d{4})$/;
它将检查指定的代码号(这里挑战的代码是1)和电话号码前面的+附加检查。为什么要进行此验证?谁在乎?为什么要骚扰用户以匹配其父母?(555)的预期结果是什么5555555
?@guest271314应该是真的为什么要进行此验证?谁在乎?为什么要骚扰用户以匹配其参数?对于(555)5555555
?@guest271314应该是真的为什么要使用[-]?
而不是简单的-
?@Huntro数字可以用空格或连字符-
分隔,也可以不用空格分隔。字符类[-]?
允许-
或`(空格)零或一次。不确定(555)的预期结果5555555
虽然如此,但注意RegExp
将为该输入字符串返回true,如下所示well@guest271314我不知道,但是从OP的正则表达式来看,它应该返回true。另外,问题只是关于括号。我没有更改正则表达式中的其他部分。为什么要使用[-]?
而不是简单的-
?@Huntro数字可以用空格或连字符-
分隔,也可以不用空格分隔。字符类[-]?
允许-
或`(空格)零或一次。不确定(555)的预期结果5555555
虽然如此,但注意RegExp
将为该输入字符串返回true,如下所示well@guest271314我不知道,但从OP的正则表达式来看,它应该返回true。另外,问题只是关于括号。我没有更改正则表达式中的其他部分。