/(?:^|[^\/\\])\[([\w\s-]*)($|\[)/
当用户开始输入字符并输入 [some tex, 以匹配此内容时,我会使用当前的正则表达式进行匹配。当他关闭时,它会停止比赛。
问题是我在前面添加了条件?:
,如果他输入\[
or /[
,我不会匹配它。
好吧,但是,如果他有类似的东西[text][bla
- 在这个中我将匹配前面的]
括号,字符串将是][bla
,但我不想要这个。如果他进入[test] [car
- 这将匹配前面的空间并且将_[car
-_
是空间。
我希望两者都只从左括号匹配,而不是在它之前匹配。你们有什么想法吗。谢谢!
我还不完全清楚,但如果我理解正确的话,你想检测的对[
和]
尖括号,但跳过/
和\
逃脱尖括号状\]
和/]
,是否正确?
因此,[aaa]
将一对,[bbb/[ccc/]ddd]
另外,和[eee\[fff\]ggg]
其他。
以下是使用三个正则表达式解析它的方法:
var str = 'Test [1st], and [2nd\\[with\\]escapes], and [3nd/[more/]escapes][4thNoSpace] text';
var re = /(\[[^\]]*\])/g;
var result = str
.replace(/([\\\/])\]/g, '$1\x01') // replace escapes with tokens
.replace(re, function(m, p1) { // process bracket pairs
return '<b>' + p1 + '</b>';
})
.replace(/(.)\x01/g, '$1\]'); // restore escapes from tokens
console.log('before: ' + str);
console.log('result: ' + result);
document.body.insertAdjacentHTML('beforeend', result);
所以,这个输入:
Test [1st], and [2nd\[with\]escapes], and [3nd/[more/]escapes][4thNoSpace] text
...产生这个输出:
Test <b>[1st]</b>, and <b>[2nd\[with\]escapes]</b>, and <b>[3nd/[more/]escapes]</b><b>[4thNoSpace]</b> text
解释:
将来,指定示例输入字符串和每个输入的预期输出会很有帮助。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句