如何在javascript中反转现有的正则表达式?
我创建了一个正则表达式来验证时间,如下所示:如何在javascript中反转现有的正则表达式?,javascript,regex,time,Javascript,Regex,Time,我创建了一个正则表达式来验证时间,如下所示:([01]?\d|2[0-3]):[0-5]\d 匹配TRUE:08:00,09:00,9:00,13:00,23:59 匹配错误:10.00,24:00,25:30,23:62,afdasdasd,ten 问题: 如何反转javascript正则表达式以验证是否不时间 注意-我已经在堆栈上看到了几种方法,但似乎无法使它们适用于我的表达式,因为我不理解反转表达式应该如何工作 答复 最简单的解决方案是反转javascript语句,而不是反转正则表达
([01]?\d|2[0-3]):[0-5]\d
匹配TRUE:08:00
,09:00
,9:00
,13:00
,23:59
匹配错误:10.00
,24:00
,25:30
,23:62
,afdasdasd
,ten
问题: 如何反转javascript正则表达式以验证是否不时间 注意-我已经在堆栈上看到了几种方法,但似乎无法使它们适用于我的表达式,因为我不理解反转表达式应该如何工作
答复 最简单的解决方案是反转javascript语句,而不是反转正则表达式本身
if(!(/^([01]?\d|2[0-3]):[0-5]\d)/.test(obj.value))
只需添加!即可创建if NOT语句。正则表达式通常用于捕获某些特定条件-越具体,正则表达式越好。您需要的是一个非常广泛的条件来匹配,因为几乎所有条件都不会被视为“时间”(空白、特殊字符、字母字符等)
正如注释中所建议的,对于您试图实现的目标,查找时间然后检查(并否定)正则表达式的结果更有意义。正如我在注释中提到的,更好的方法是否定测试,而不是创建与任何非时间匹配的新regexp 但是,如果确实需要regexp,可以使用负前瞻来匹配非时间的开始:
/^(?!([01]?\d|2[0-3]):[0-5]\d$)/
演示:
注意,我锚定了regexp(^和$),这可能无法满足您的需要。不要反转正则表达式,如果检查它,则反转
。否定验证结果似乎比创建任何非时间的正则表达式更简单。我考虑过这一点,但很好奇人们的想法。感谢您的建议。在该网站上,您已链接d它似乎与非时间的语句不匹配,如OP所问…@EladStern:如何?似乎对我有效--可能是编辑过的?看起来匹配的只是非时间行前的空格,而不是实际语句。@EladStern是的,它与整个语句不匹配,只是语句的开头如果需要匹配语句,只需在先行部分后面添加一个*
,如