在下划线,星号和&之间匹配字符串的正则表达式波浪号

时间:2016-05-20 05:56:54

标签: javascript regex

我得到的关闭是_(.*?)_

我应该使用什么正则表达式来获取下划线之间的每个字符串实例,但不应该是字符串的子字符串(检查test3),也不应该在新行中获取它们(检查test4)

var string = "_test1 test2_ test_3_ _\n test4_ _test5_"

正则表达式只能获得_test1 test2_& _test5_

注意:任何字符/字符串单词test不重要

3 个答案:

答案 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);

http://regexr.com/3df3m