2017-08-23 60 views
-4

閱讀本Question我想使用這個表達式正則表達式 - 語法錯誤的JavaScript

/(!<[^>]+>)+/g

喜歡這個

var regex = /(!<[^>]+>)+/g; 
new RegExp('myString', regex) 

,但我得到

Uncaught SyntaxError: Invalid flags supplied to RegExp constructor '/(!<[^>]+>)+/g'

任何人有知道如何後使用它的權利?

+2

你在做什麼?你已經在'regex'中定義了一個正則表達式。 –

回答

1

new Regexp當你有一個正則表達式中使用一個字符串並且您想將其轉換爲正則表達式對象。

這是可怕的,你應該幾乎從不使用它。 (例外是當你動態生成一個正則表達式)。

您不需要使用它:您在上一行使用正則表達式字面量創建對象。


要應用正則表達式爲字符串時,使用match方法:

var regex = /(!<[^>]+>)+/g; 
 
console.log("myString".match(regex)); 
 
console.log("Trivial !<tag> example".match(regex)); 
 
console.log("!<tag attribute='>>>'> example".match(regex));

(但applying regex to HTML is usually a terrible idea)。

0

RegExp用於從字符串

創建正則表達式的第二個屬性應該像igm標誌,但你給一個正則表達式本身。

RegExp語法RegExp(regexString,flags)

,但使用的是

var regex = /(!<[^>]+>)+/g; 
new RegExp('myString', regex) 
         ^^^^^^ 

不能使用RegExp功能測試的字符串。

,如果你想檢查'myString'對你的正則表達式,使用regex.test('myString')

,如果你想找到'myString'正則表達式的所有比賽中,使用'myString'.match(regex)

+0

「這就是問題」 - 這是一個症狀。問題是'new RegExp'用於創建正則表達式對象,而不是將正則表達式對象應用於字符串。 – Quentin

+0

同意。在第一次革命中,我指出了這個問題的一個重大錯誤。現在編輯 –