Javascript正则表达式替换 - 不替换所有必需的字符串

时间:2013-01-23 14:04:39

标签: javascript regex

我不知道这里发生了什么......

model.attributes.data.Path.replace('/\\/g',""), @options.path.replace('/\\/g',"")

做的时候:

console.log model.attributes.data.Path.replace('/\\/g',""), 
@options.path.replace('/\\/g',"")

数据是:

  

T2 / T2_2,T2 / T2_2

它返回:

  

T2T2_2,T2 / T2_2

所以只更换了第一条路径,而不是第二条路径?为什么会这样?

3 个答案:

答案 0 :(得分:2)

除了你匹配反斜杠(\\ = \)这一事实,而不是正斜杠(\/ = /),不要放你的正则表达式将replace函数作为字符串。

使用:

.replace(/\//g,"");

而不是

.replace('/\//g',"");

然后它会正常工作:

"T2/T2_2 , T2/T2_2".replace(/\//g,"");
// returns: "T2T2_2 , T2T2_2"

否则,它只会尝试逐字地找到字符串 '/\//g'

另外,要替换1个正则表达式中的正斜杠和反斜杠,请尝试以下方法:

"T2/T2_2 , T2\T2_2".replace(/\/|\\/g,"");
// returns: "T2T2_2 , T2T2_2"

# \/|\\ Matches:
# \/  - Forward slash
# |   - Or
# \\  - Backslash

答案 1 :(得分:1)

尝试:

model.attributes.data.Path.replace(/\//g,"")
@options.path.replace(/\//g,"")

/\\/g匹配反斜杠,/\//g匹配正斜杠。

答案 2 :(得分:1)

尝试使用.replace(/\//g,"")代替.replace('/\\/g',""),(正则表达式不是字符串)。