0
文書内で発生した文字列があれば、それを探して変更する必要があります。私は別に扱うことができるが、一緒に働くことができない2つの条件があります。Javascript regex任意の位置の任意の文字で、特定の文字で囲まれています
- 単語は、複数の行にまたがって壊れていることがあり、
-\n
と一致することがあります。 - 文字列は、英数字でもハイフンでもない文字で囲まれている場合にのみ一致する必要があります。
一致するテキストを<stuff>
タグで囲みたいとします。最初は醜い感じがする作品があります。すべての単語の各文字の間に任意の-\n
グループを挿入します。
function createMask(term){
var words = term.split(' ');
new_words = [];
for(i=0; i<words.length; i++){
var word = words[i].split('').join('(\\-\\n)?');
new_words.push(word);
}
var mask = new_words.join('\\s'); \\Any space is ok here.
return mask;
}
var doc = 'This is sand, and rand,\nand something else a-\nn-\nd ';
var mask = createMask('and');
var newDoc = doc.replace(RegExp(mask, 'ig'), '<stuff>$&</stuff>');
これは最後の 'and'だけでなく、 'sand'と 'rand'内のものに一致します。私はキャプチャグループが間違っているという事実を除いて作品を表現を一緒に組み合わせると、次の
function createMask(term){
var mask = '([^a-zA-Z0-9-])(' + term + ')([^a-zA-Z0-9-])';
return mask;
}
var doc = 'This is sand, and rand,\nand something else a-\nn-\nd ';
var mask = createMask('and');
var newDoc = doc.replace(RegExp(mask, 'ig'), '$1<stuff>$2</stuff>$3');
を行うことができます秒
。私は(\\-\\n)?
を(?:\\-\\n)
に切り替えようとしましたが、何も一致しませんでした。どんな助けも大歓迎です。
意味しますか\\ b "、 'ig')、 ' $& ')'? –
revo
それはトリックを行うように見えます!私はそれを答えとして投稿してください。私はそれを受け入れます。 – rurp