1

これは本当に簡単だと思いますが、どうすれば一致しますか

  1. 行頭または空白のいずれかに一致
  2. azにマッチ
  3. 行末または空白のいずれかに一致

商品番号のみ返品したいです。2 次の文字列の場合

"one 1.ignore two 2ignore ignore3 three"

式が返ってきます

["one","two","three"]

ありがとう

4

2 に答える 2

2

これらの項目に一致する正規表現には後読みが必要ですが、これは JavaScript ではサポートされていません。手動で反復して一致するグループを抽出するか (@Some1.Kill.The.DJ で示されているように)、一致する代わりに文字列を分割します。

str.split(/\s+(?:\S*?(?![a-z])\S+\s+)*/);

この式は、 以外の文字を少なくとも 1 つ含む単語と組み合わされたすべての空白に一致します[a-z]。ただし、この正規表現は複雑で保守が容易ではありません。また、空の文字列が生成されることもあります。より良い、次のようなことをしてください

str.split(/\s+/).filter(RegExp.prototype.test.bind(/^[a-z]+$/));
于 2012-11-30T12:16:57.137 に答える
0

次のコードを使用します。

var str = 'one 1.ignore two 2ignore ignore3 three';
str = str.replace(/\s(?=[a-z])/ig, function(text, p1) {
    return p1 ? p1 : text;
});

var arr = str.match(/([a-z]+)(?=\s|$)/ig);
于 2012-11-30T11:26:04.677 に答える