我在node.js中有一個正則表達式,它匹配一些奇怪的東西。看看這個:奇怪的正則表達式匹配node.js
var regex = new RegExp('(<\?%)|(%\?>)', 'g');
console.log('<tag><?%text%?></tag>'.match(regex));
引出[ '>', '%', '%', '>', '>' ]
,我不明白爲什麼。
其目的是匹配<?%
或%?>
,它在https://regex101.com/上工作得很好。
我在node.js中有一個正則表達式,它匹配一些奇怪的東西。看看這個:奇怪的正則表達式匹配node.js
var regex = new RegExp('(<\?%)|(%\?>)', 'g');
console.log('<tag><?%text%?></tag>'.match(regex));
引出[ '>', '%', '%', '>', '>' ]
,我不明白爲什麼。
其目的是匹配<?%
或%?>
,它在https://regex101.com/上工作得很好。
那是因爲你還沒有逃過\
。它應該是\\
。
按下Ctrl鍵+移+我,去Console
和粘貼下面的代碼。
var regex = new RegExp('(<\\?%)|(%\\?>)', 'g');
console.log('<tag><?%text%?></tag>'.match(regex));
您的反斜槓被字符串逸出吞噬。
您應該使用正則表達式來代替:/(<\?%)|(%\?>)/g
您的徽章正在破解CSS。應該通知Meta! – 2016-04-14 18:36:45
是的,noob是對的,就像一個bug。另外還有一件奇怪的事情。 SLaks有500k代表,我從來沒有在這裏見過他。你到哪裏去過? '':-) – Shafizadeh
否;那是不正確的做正則表達式的方法。 – SLaks
@SLaks:你的理由是正確的。我顯示了爲什麼OP的代碼不工作,因爲'\'是未轉義的。 – 2016-04-14 18:34:23
這實際上雖然工作,但...我錯過了什麼@SLaks? – brandonscript