2014-10-20 40 views
-2

我有以下字符串Item * \* and *。我想匹配所有的*字符並跳過\*之一。在正則表達式中匹配字符*而不是 *?

var input = "Item * \\* and *"; 
var output = (some regex magic happens here) 
alert(output); // Item foo \* and foo 

任何想法?

+0

您使用哪種語言/平臺?你試過什麼了?如果你的字符串包含'\\ *'會發生什麼?所有這些都是你的問題失蹤的重要部分。 – 2014-10-20 17:46:00

+0

您使用哪種語言/平臺? ** Javascript **你到目前爲止嘗試過什麼? **我能夠匹配「*」,但只與空間匹配。**如果您的字符串包含'\\ *',會發生什麼? **不應該匹配** – 2014-10-20 18:05:55

+0

輸出結果應該如何?一個數組像'[「Item *」,「和*」]'?請讓你的問題陳述更清楚。 – 2014-10-20 18:18:58

回答

2

這就是我想你想acheive:

var input = "Item * \\* and *"; 
 
var repl = "foo"; 
 
var output = input.replace(/(\\\*)|\*/g, function(_, a) { return a || repl; }); 
 
alert(output); // Item foo \* and foo

基本上,當你提供的replace方法的功能,它會在比賽中任何匹配組通過作爲該函數的參數,並使用返回值作爲替換字符串。在這種情況下,由於自變量a僅在與"\*"匹配時才具有值,所以它將使該匹配保持不變。否則,它將用"foo"替換它。

相關問題