Javascript正则表达式匹配任何东西但是

时间:2016-10-22 22:06:24

标签: javascript regex match string-matching

我想要一个与#39; {{'或' {:'

测试用例:

var t1= abcd;
var t2= abcd{{;
var t3= abcd{:efg;

我希望他们在使用t.match(REGEX)时输出:

//"abcd".match(REGEX) -->      ["abcd"];
//"abcd{{.match(REGEX)"-->     ["abcd","{{"]
//"abcd{:efg".match(REGEX)-->  ["abcd","{:"]

我试过了:

///^[\s\S]+[^{{|{:]/           //the the match returns null
///^[\s\S]*?(?={{|{:)/         //but for t1-->matches null
///^[\s\S]+[^{{|{:]+[\s\S]*/   //but for t3--> returns abcd{{efg

但他们总是回来:

//"abcd".match(REGEX) --> null

即使没有" {{"或" {:"字符?

2 个答案:

答案 0 :(得分:0)

([^ {)(({{)|({))

然后你可以使用\ 1 \ 2。 。 \ n引用字符组或{{

如果您需要在开头使用时添加引号: (“[^ {] *”)为第一组

答案 1 :(得分:0)

您可以使用

^((?:[^{\n])+)({{|{:)*

其中
((?:[^ {\ n])+) - 新行之前的第一组或{,
         ({{| {:)* - 可选{{或{:group。

请参阅我之前验证过的https://regex101.com/r/3UOewQ/4