次の文字列があります。
"bar foo test-line drop-line"
何かで始まり「-line」で終わる単語を置き換える必要があります。
基本的に持っている:
"bar foo new_word new_word"
私は試した:
string.replace(/\.-line$/g,'new_word')
しかし、うまくいきません。
次の文字列があります。
"bar foo test-line drop-line"
何かで始まり「-line」で終わる単語を置き換える必要があります。
基本的に持っている:
"bar foo new_word new_word"
私は試した:
string.replace(/\.-line$/g,'new_word')
しかし、うまくいきません。
これを正規表現として試してください:
/\S+-line(?![-\w])/
/\S+-line\b/
ダッシュは単語の一部と見なされず、誤って と一致するため、アンカーという単語はここでは適していませんtext-with-line-not-to-be-replaced
。したがって、先読み構造。
もちろん、ユースケース\S
によっては、少し粗く見えるかもしれません。あなたの単語が実際に文字とダッシュなどだけで構成されている場合は、次のnormal* (special normal*)*
パターンを使用できます。
/[a-z]+(-[a-z]+)*-line(?![-\w])/i
(ノーマル:[a-z]
、スペシャル:-
)
(編集: @thg435 のおかげで、先読み構造を変更しました)
どうですか
string.replace(/\b\S+-line\b/g,'new_word')
\b
単語境界
\S
非空白
fgeが鋭く指摘しているように、終了などをキャッチしないように\b
アフターが必要です。line
lines
liner
正規表現では、\b を使用して新しい単語の始まりを検出し、\w を「単語文字」に使用できます。
"your string".replace(/\b\w+-line\b/g,'new_word')
http://www.w3schools.com/jsref/jsref_obj_regexp.aspを参照してください。