2017-01-20 9 views
1

テイクxnum-539 classname random-word xnum-hello hi-239空白までxの後のすべての正規表現

xnum-の後にあるものを選択する必要があります。この場合、539helloです。

私は複数のものを試してみましたし、私が持っている最高のいずれかです:

-(.*?)\s。 しかしダッシュの後ろのものだけが必要なときはダッシュが含まれています。 (EX -539

または全部を取る

rnum-(.*?)\s

どちらのソリューションでも、手動でスライスする必要はありません。 これは重複していますが、私は他の回答と一緒に作業しようとしましたが、私は正規表現でひどいです。

おかげ

+0

例はデータの範囲ですか、任意の数の 'xnum-'エントリがありますか?ウィキトーの答えはあなたがカバーしています:-) –

+0

JS regexエンジンはlookbehindをサポートしていないので、実際にはここで行うことはほとんどありません。プレーンな 'String#match'や' RegExp#exec'コールを使うことはできません。ですから、ループ内で 'RegExp#exec'をスライスするか実行するかを選択してください。 –

+0

未知数の 'xnum-'エントリ – Apswak

答えて

3

はあなたの正規表現を注意してください、実際に文字列の最後に、あなたの値と一致する正規表現エンジンを停止させ、このように、試合の最後に空白(\s)が必要です。

var s = "xnum-539 classname random xnum-hello"; 
 
var res=[],m; 
 
var re = /xnum-(\S+)/g; 
 
while ((m=re.exec(s)) !== null) { 
 
    res.push(m[1]); 
 
} 
 
console.log(res);

パターンが詳細: - リテラル文字xnum-を一連の

  • xnum-

    あなたは/xnum-(\S+)/g正規表現とアクセスグループ1を持つすべての一致を得ることができます

  • (\S+) - 1つ以上の非空白記号に一致するID 1のグループをキャプチャします。
+0

こんにちは、お返事ありがとうございます。 1つのライナーでそれを得る方法はありますか?私は 'document.getElementsByClassName(REGEXHERE) 'に正規表現を置くことになります。それ自体はループ内にあります。ありがとう – Apswak

+0

いいえ、私はすでに質問へのコメントで説明しました。私はあなたが正規表現を 'getElementByClassName'に渡すことができるのではないかと疑います。 –

関連する問題