「a」から「c」への文字列を削除するためのこのコードを書きます
var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);
コンソールの結果は「bbd」です
しかし、私にとって正しい結果は「bbabbd」です
この問題に正規表現を使用できますか?
助けてくれてありがとう。
「a」から「c」への文字列を削除するためのこのコードを書きます
var str = "abcbbabbabcd";
var re = new RegExp("a.*?c","gi");
str = str.replace(re,"");
console.log(str);
コンソールの結果は「bbd」です
しかし、私にとって正しい結果は「bbabbd」です
この問題に正規表現を使用できますか?
助けてくれてありがとう。
a(?:(?!a).)*c
ベースの正規表現を使用しlookaheadます。デモを参照してください。最初の後にも.*?消費します。それを停止するには、.aalookahead
https://regex101.com/r/cJ6zQ3/34
編集:
a[^a]*c
negated character class1キャラしかないので実際に使えます。
はgグローバル正規表現であることを意味し、文字列内のabcとの両方を取得することを意味abbabcします。したがって、これは からアイテムを適切に削除しますa..c。2 つしか見ておらずabc、 を見逃したようですabbabc。結果bbdは、実際には"remove string from 'a' to 'c'" であるため、実際には正しいです。
abcbbabbabcd => bbd
正規表現を に更新する必要があります。これにより、との間のa[^ac]*?c文字が回避されます。acac
var str = "abcbbabbabcd";
var re = new RegExp("a[^ac]*?c","gi");
str = str.replace(re,"");
console.log(str);
