Javascript正则表达式,不包括单词
Javascript Regular Expression excluding a word
我熟悉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(/'/'/|''''/);
- 如何将页面上的所有电话号码更改为可点击链接,不包括特定类别的元素
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 将正则表达式重新分解为不包括空组
- 为什么从JSON文本到类型的转换不包括函数
- XMLHttpRequest调用不包括If Modified Since标头
- 使用 JavaScript 执行一行 PHP(不包括 PHP 文件)
- 捆绑器不包括 .min 文件
- 与冒号(不包括冒号)之间的正则表达式单词匹配
- 包含特殊字符 (!,@,#,&) 不包括其他特殊字符
- Javascript RegEx:如何获取单引号之间的名称(不包括单引号)
- Javascript RegEx匹配URL's,但不包括图像
- Rails不包括用于javascript的require_tree
- 确保填充网格时单词不会重复
- 获取JS中特定路径的cookie,不包括根路径
- 正则表达式计算不包括 html 标记的单词
- Javascript正则表达式,不包括单词
- 查找字符串中第一个最长的单词,不包括符号
- Regex将所有单词换行到span中,不包括img元素
- JavaScript RegEx不包括某些单词/短语
- 选择单词边界,但不包括标点符号