我得到的关闭是_(.*?)_
我应该使用什么正则表达式来获取下划线之间的每个字符串实例,但不应该是字符串的子字符串(检查test3),也不应该在新行中获取它们(检查test4)
var string = "_test1 test2_ test_3_ _\n test4_ _test5_"
正则表达式只能获得_test1 test2_
& _test5_
注意:任何字符/字符串单词test不重要
答案 0 :(得分:2)
如果可以保证每个下划线对由空格字符分隔(因此没有两个下划线彼此相邻),那么此正则表达式将起作用:\b_([\w\s]+?)_\b
要匹配您需要的3个案例中的任何一个,请使用此正则表达式:(?:\b|\s|^)[_*~]([\w\s]+?)[_*~](?:\s|$)
答案 1 :(得分:2)
您可以使用此正则表达式
(?:^| )(_(?:[\w ]+?)_|([*~])(?:[\w ]+?)\2)(?= |$)
<强> Regex Demo 强>
JS Demo
var re = /(?:^| )(_(?:[\w ]+?)_|([*~])(?:[\w ]+?)\2)(?= |$)/g;
var str = "_test1 test2_ test_3_ _\n test4_ *test5* test*3* _asdf_ _ghjkl_ _mno_";
document.writeln("<pre>" + str.match(re) + "</br>" + "</pre>");
答案 2 :(得分:1)
从
获取所需的值test1 test2 test_3_ \ n test4 test5
使用
_test[^_\n]+_
下面的一个也适用。
^_([^_]+?)_|_([^_]+?)_$
text.match(/^_([^_]+?)_|_([^_]+?)_$/g);