正则表达式可以匹配除字符组合以外的所有内容

时间:2018-12-05 18:39:46

标签: javascript regex

我想匹配字符串中除#*#模式之外的所有字符。我下面的正则表达式适用于以下match1之类的情况,但它也将匹配不在##模式中的#或,如下面match2所示,并且因此失败。如果它们同时出现,如何修复下面的正则表达式以匹配#*#?

var string1 = 'Hello#*#World#*#Some other string#*#false'
var string2 = 'Hello#*#World#*#Some #other #string#*#false'
// This would match
var match1 = string1.match(/^([^#*#]+)#\*#([^#*#]+)#\*#([^#*#]+)#\*#([^#*#]+)$/);  
// This would no longer match since it matches other #'s that are not in a #*# pattern
var match2 = string2.match(/^([^#*#]+)#\*#([^#*#]+)#\*#([^#*#]+)#\*#([^#*#]+)$/);

此外,匹配项应匹配模式之间的整个单词。因此,对于match1来说是

[ 'Hello#*#World#*#Some other string#*#false',
  'Hello',
  'World',
  'Some other string',
  'false',
  index: 0,
  input: 'Hello#*#World#*#Some other string#*#false',
  groups: undefined ]

1 个答案:

答案 0 :(得分:1)

您可以尝试一下。

var string1 = 'Hello#*#World#*#Some other string#*#false'
var string2 = 'Hello#*#World#*#Some #other #string#*#false'
// This would match
var match1 = string1.match(/[^(#\*#)]+/g);  

var match2 = string2.match(/[^(#\*#)]+/g);

console.log(match1);
console.log(match2);