2013-05-06 100 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