Javascript正则表达式,不包括单词

Javascript Regular Expression excluding a word

本文关键字:单词 不包括 正则表达式 Javascript      更新时间:2023-09-26

我熟悉javascript正则表达式不匹配单词,但它对我没有多大帮助。当给定一个字符串(包含任何类型的字符)时,我希望围绕两个标记"//"answers"''''"来解析它。我做了以下操作:

var patt = /.*[^"//"]/gm;
patt.exec(str);

但它似乎与引号之间出现的任何字符相匹配,即"/"answers"//"。我该如何实现它?

当您用^开始一个字符类时(就像在[^"//"]中一样),它意味着"除了列出的字符之外的任何字符"所以CCD_ 3的意思是";匹配除"/之外的任何字符中的一个(它忽略了您已将它们分别列出两次的事实)。

如果你试图匹配两个斜杠(//)和一个反斜杠(')之间的文本(根据你的问题;你后来发表了一条评论,建议它是两个反斜杠,我稍后会处理),那么:

var match = str.match(/'/'/(.*?)''/);    // Match between // and '

注意,我们必须转义斜杠,因为斜杠是正则表达式的分隔符;我们必须转义反斜杠,因为反斜杠是转义字符。

上面的意思是";匹配两个斜杠后接零或多个任何字符后接一个反斜杠"*之后的?使*不贪婪(因此它将消耗尽可能少的字符来满足表达式)。()创建一个捕获组,该组将在匹配对象中接收在该位置匹配的字符。

示例:

test("foo");
test("foo //bar");
test("foo //bar''");
test("foo //bar'' baz");
test("bar'' baz");
test("//bar'' baz");
test("foo //bar'' baz '' more '' more");
function test(str) {
    var m = str.match(/'/'/(.*?)''/),
        cap = (m && m[1]) || "<em>nothing</em>";
    display("Str: <code>" + str + "</code>: Captured <code>" + cap + "</code>");
}

输出:

Str:foo:捕获nothing

Str:foo //bar:捕获nothing

Str:foo //bar':捕获的bar

Str:foo //bar' baz:捕获的bar

Str:bar' baz:捕获nothing

Str://bar' baz:捕获的bar

Str:foo //bar' baz ' more ' more:捕获的bar

实时复制

或者对于两个反斜杠:

var match = str.match(/'/'/(.*?)''''/);  // Match between // and ''

实时复制(输出相同,只有两个反斜杠)

关于JavaScript正则表达式的一些阅读:

  • 规范(这是一个方便的可链接HTML呈现;规范是PDF)
  • Mozilla出色的RegExp页面

简单的怎么样

var tokens = str.split(/'/'/|''''/);