回答
兩個評價是完全相同的正則表達式,但首先是一個文字,這意味着你不能使用它裏面的任何變量,你不能動態生成一個正則表達式。
第二個顯式使用構造函數,可用於創建動態正則表達式。
var x = '3', r = (new RegExp(x + '\d')); r.test('3d')
以上是使用構造函數動態構造正則表達式的示例,您無法以字面形式進行操作。
在99%的情況下,您將只依賴JS的所有正則表達式的第一個版本(文字)。在你需要說的高級場景中,用戶輸入動態地構造一個正則表達式,然後你需要第二種形式。
編輯#1:第一個匹配一個數字,第二個匹配字母d
。爲了讓它等於第一個,我們假設你打算這樣做,你必須加倍逃避第二個。請記住,如果第二個示例是新的RegExp('\ d'),我上面輸入的建議是準確的。
/\d/.test('3') // true
(new RegExp('\d')).test('3') // false
(new RegExp('\\d')).test('3') // true
爾,正則表達式'3 \ D'不匹配' 「3D」'... – Amber 2010-12-20 20:51:20
感謝您的交代,我問的原因是我有這個表達式/^+ | [\\ /#;] | + $/gi(1或更多空格或包含\ /#;或以一個或多個空格結尾)。在每個奇數時間使用非構造函數時,結果都是錯誤的。例如。結果是交替的。當使用構造函數時,每次都按預期工作。奇怪! – bob 2010-12-20 20:55:28
還有另一個區別:文字只在* parse時間創建* one *對象*而構造函數總是創建一個新對象。這將在ES5中進行更改,並且文字也將始終返回一個新對象。 – 2010-12-20 21:29:50
- 1. 正則表達式表達的差異
- 2. 正則表達式差異
- 3. javascript正則表達式和swift正則表達式之間的差異
- 4. js正則表達式的差異
- 5. PHP的正則表達式差異
- 6. Go的差異正則表達式
- 7. JavaScript和Java之間的正則表達式模式的差異?
- 8. 的Javascript正則表達式跨瀏覽器的差異
- 9. 差異的JavaScript之間的兩個正則表達式中
- 10. 正則表達式差異+和*
- 11. 正則表達式驗證差異
- 12. 差異正則表達式之間。*和+
- 13. [af]?lex正則表達式差異
- 14. java.net和javascript之間的正則表達式差異?
- 15. 使用.NET正則表達式IIS UrlRewrite正則表達式的差異
- 16. 標準正則表達式與python正則表達式的差異
- 17. PHP的正則表達式的JavaScript正則表達式
- 18. Javascript正則表達式測試怪異
- 19. JavaScript的正則表達式
- 20. 的Javascript正則表達式
- 21. 的Javascript正則表達式
- 22. 正則表達式的JavaScript
- 23. 正則表達式的Javascript
- 24. JavaScript的 - 正則表達式
- 25. JavaScript的正則表達式
- 26. 正則表達式的JavaScript
- 27. JavaScript的正則表達式?
- 28. 的Javascript正則表達式
- 29. Javascript的正則表達式
- 30. Javascript的正則表達式
關於11個字符 – epascarello 2010-12-20 22:08:17