質問

このサンプルテキストは、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];

参照サイトです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top