如何在javascript中反转现有的正则表达式?

时间:2014-02-17 15:12:01

标签: javascript regex time

我创建了一个正则表达式来验证时间,如下所示:([01]?\d|2[0-3]):[0-5]\d

匹配TRUE:08:0009:009:0013:0023:59

匹配FALSE:10.0024:0025:3023:62afdasdasdten


问题

如何反转javascript正则表达式以验证时间?

注意 - 我已经看到了几种在堆栈上执行此操作的方法,但似乎无法使它们适用于我的表达式,因为我不明白反转表达式应该如何工作。

http://regexr.com?38ai1


ANSWER

最简单的解决方案是反转javascript语句而不是正则表达式本身。

if (!(/^(([01]?\d|2[0-3]):[0-5]\d)/.test(obj.value))

简单地添加!创建一个if NOT语句。

2 个答案:

答案 0 :(得分:2)

正如我在评论中提到的,更好的方法是否定测试,而不是创建一个匹配任何非时间的新正则表达式。

但是,如果你真的需要正则表达式,你可以使用负向前瞻来匹配非时间内的开头:

/^(?!([01]?\d|2[0-3]):[0-5]\d$)/

DEMO:http://regex101.com/r/bD3aG4

请注意,我锚定了正则表达式(^和$),这可能无法满足您的需要。

答案 1 :(得分:1)

正则表达式通常用于捕获某些特定条件 - 越具体,正则表达式就越好。您正在寻找的是一个非常宽泛的条件,因为几乎所有东西都不会被视为“时间”(空白,特殊字符,字母字符等等)。

正如评论中所建议的,对于你想要实现的目标,寻找时间然后检查(并否定)正则表达式的结果更有意义。