我希望得到一个多行字符串中的字符串,其中包含任何特定字符,我希望在两个特定的凝视之间进行.
我使用这个正则表达式和这项工作,但如果内容有任何字符(\ r \n\t)不起作用,并获得空值.
This Wotked
var regex = new RegExp("\-{2}Head(.*)-{2}\/\Head");
var content = "--Head any Code and String --/Head";
var match = regex.exec(content);
Run Code Online (Sandbox Code Playgroud)
这没用
var regex = new RegExp("\-{2}Head(.*)-{2}\/\Head");
var content = "--Head \n any Code \n and String --/Head";
var match = regex.exec(content);
Run Code Online (Sandbox Code Playgroud)
我发现了一个regexer(http://www.regexr.com/v1/),并知道我应该使用DOTALL多行字符串,但我不能使用DOTALL为regex.exec
谢谢.
geo*_*org 26
javascript不支持s
(dotall)修饰符.唯一的解决方法是使用"全部捕获"类,[\s\S]
而不是使用点:
regex = new RegExp("\-{2}Head([\\s\\S]*)-{2}\/\Head")
Run Code Online (Sandbox Code Playgroud)
另请注意,您可以使用文字更简洁地编写表达式:
regex = /--Head([\s\S]*)--\/Head/
Run Code Online (Sandbox Code Playgroud)
Wik*_*żew 24
在2018年,暂时在某些浏览器中实现了ECMA2018标准,JS正则表达式现在支持s
DOTALL修饰符:
console.log("foo\r\nbar".match(/.+/s)) // => "foo\r\nbar"
Run Code Online (Sandbox Code Playgroud)
实际上,JS本机匹配所有字符正则表达式构造是
[^]
Run Code Online (Sandbox Code Playgroud)
这意味着匹配任何不是什么的角色.由于不完整的字符类(演示),其他正则表达式会产生警告或异常,尽管它对JavaScript(演示)完全有效.
事实是,[^]
它不可移植,因此除非您希望代码仅在JS上运行,否则不建议使用.
regex = /--Head([^]*)--\/Head/
Run Code Online (Sandbox Code Playgroud)
具有相同的模式匹配的JS,并说,Java的任何字符,您需要使用在其他的答案中所示的解决方法:使用具有两个相对的速记字符类的字符类时的便携性是关键:[\w\W]
,[\d\D]
,[\s\S]
(最常用的) .
注意这个[^]
更短.
归档时间: |
|
查看次数: |
5224 次 |
最近记录: |