2013-05-06 99 views
0

我正在尝试查找将用于验证URL的正则表达式。我发现这个家伙:正则表达式匹配正则表达式,但不是在JavaScript中?

^(http|ftp|https)://[\w-]+(\.[\w-]+)+([\w.,@?^=%&:/~+#-]*[\[email protected]?^=%&/~+#-])?$ 

这工作得很好,当我tested it using regexpal,但是当我真正把它插入到我的javascript它无法比拟的。 Fiddle here.

我正在测试针对此网址:

http://s3.amazonaws.com/SomeShow/Podcasts/HouroneofWhatever234.mp3

有人能看到为什么它会在regexpal匹配,而不是当我尝试在我的javascript使用它?

回答

4

使用正则表达式文字:

/^(http|ftp|https):\/\/[\w-]+...$/ 

(你也有逃跑的斜线,以防止它们被解释为结束正则表达式终端符号)如果你使用一个字符串

,你必须转义每个反斜杠,因为反斜杠也是字符串中的转义字符。

new RegExp("^(http|ftp|https)://[\\w-]+...$") 

在你现在的表情,"[\w-]+"将转向[w]+因为\w不是字符串有效的转义序列。


参见:https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions#Creating_a_Regular_Expression

+1

和逃生每一个斜杠。 – 2013-05-06 22:59:55

+0

,因为我会得到一个意外的令牌错误,否则? http://jsfiddle.net/tJhFN/2/ – 2013-05-06 23:01:59

+0

是的,修正...这里有点晚了;) – 2013-05-06 23:04:29