0

ここで何が起こっているのかわかりません..

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

最初のパスだけが置き換えられ、2 番目のパスは置き換えられませんでしたか? なぜでしょうか?

4

3 に答える 3

2

\\スラッシュ ( = \) の代わりにバックスラッシュ ( \/= ) を一致させているという事実は別/として、正規表現を文字列として置換関数に入れないでください。

使用する:

.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
于 2013-01-23T14:10:04.420 に答える
1

試す:

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

/\\/gバックスラッシュとスラッシュに/\//g一致します。

于 2013-01-23T14:08:37.913 に答える
1

.replace(/\//g,""),の代わりに試してください.replace('/\\/g',"")(正規表現は文字列ではありません)。

于 2013-01-23T14:09:20.783 に答える