JavaScriptでの正規表現のヘルプ
-
05-07-2019 - |
質問
このサンプルテキストは、html要素のクラス名から取得したものです。
rich-message err-test1 erroractive
rich-message err-test2 erroractive
rich-message erroractive err-test1
err-test2 rich-message erroractive
" test1" /" test2"と一致させようとしています。これらの各例のデータ。現在、次の正規表現を使用しています。この正規表現は、「err-test1」に一致します。単語の種類。ハイフン(-)の後のデータだけに制限する方法がわかりません。
/err-(\S*)/ig
この壁にぶつかって頭が痛い。
解決
私が読んでいるところから、あなたのコードはすでに動作しています。
Regex.exec()
は、成功すると結果の配列を返します。
配列の最初の要素(インデックス0)は文字列全体を返し、その後、すべての()
で囲まれた要素がこの配列にプッシュされます。
var string = 'rich-message err-test1 erroractive';
var regex = new RegExp('err-(\S*)', 'ig');
var result = regex.exec(string);
alert(result[0]) --> returns err-test1
alert(result[1]) --> returns test1
他のヒント
「err-([^ \ n \ r] *)」を試すことができますが、問題は正規表現であると確信していますか?最初のキャプチャだけでなく、結果全体を使用していますか?
-の後のものは結果の配列にあるはずです。最初の項目はすべて一致するテキスト(例:「err-test1」)であり、次の項目はキャプチャ括弧からの一致(例:「test1」)です。
myregex = /err-(\S*)/ig;
mymatch = myregex.exec("data with matches in it");
testnum = mymatch[1];
参照サイトです。
所属していません StackOverflow