JavaScript:允许带有Regex的字符但排除这些字符的某些模式

时间:2016-03-10 00:17:13

标签: javascript regex

是否有办法允许某些字符范围,但还排除了这些允许字符的某些模式

例如,让我们说你正在搜索一系列字母:

[A-Za-z]

但您想要匹配这些接受字符的特定模式,例如:

abc

我一直试图制作一段表达并且没有运气。我能想到的是:

([A-Za-z][^abc])*

但这并没有提供我正在寻找的行为。有没有办法搜索一系列字符并排除接受字符的某些图案?

修改

为了澄清,我想知道我是否能够仍然匹配除了不接受的模式之外的角色。例如,如果我们有:

SomeTextabcMoreText

abc是一种非法模式,有没有办法匹配合法字符并产生类似于以下内容的结果:

SomeText
MoreText

2 个答案:

答案 0 :(得分:1)

我不认为正则表达式是解决此问题的正确方法。

根据语言的不同,有两种选择:

  1. String.replace - 如果您只想输出结果。
  2. String.split如果您希望将结果标记化。
  3. 
    
    $('#replace').text("SomeabcStringabcwithsomeabccharacters".replace(/abc/g, ""));
    $('#split').text(JSON.stringify("SomeabcStringabcwithsomeabccharacters".split("abc")));
    
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div id='replace'></div>
    <div id='split'></div>
    &#13;
    &#13;
    &#13;

答案 1 :(得分:0)

退后一步,更多地分析我的特定问题后,我意识到Regex不是解决这个问题的最佳方法。

使用非法模式作为分隔符来解析字符串会更有意义:

var data = 'SomeTextabcMoreText';
var illegalPattern = 'abc';

console.log(data.split(illegalPattern)); // => ["SomeText", "MoreText"]

DEMO