我正在尝试匹配长度为>的字符串; 10
var value = "Lorem Ipsum is simply dummy text of the printing and type";
/^.{10,}$/.test(value);
返回true;
但是,如果我有一个带有新行字符的字符串,那么它就失败了。
如何更新正则表达式来修复它。
我知道我可以查一下.length> 10或用空格替换新行。但是,我想更新正则表达式。
答案 0 :(得分:3)
如果您正在测试它的长度,则应该使用.length
。如果你坚持使用正则表达式,那么点实际上会匹配除换行符之外的所有内容。您可以通过搜索\s\S
来改变这种情况:
([\s\S]{10,})
这匹配任何空白和任何非空白,覆盖整个光谱。遗憾的是,js正则表达式不支持s
修饰符。
答案 1 :(得分:3)
JavaScript没有dot matches newlines
的原生选项。要解决此问题,请使用其他选择器:
[\S\s]
这将匹配任何Whitespace
或Non-Whitespace
字符。
var s = "some\ntext\n",
r = /^[\S\s]{10,}$/;
console.log(r.test(s));
而且,必须要小提琴:http://jsfiddle.net/kND83/
有些http://xregexp.com/等库可以为dot matches newlines
添加选项,但他们所做的只是在[\S\s]
中为您的正则表达式中的.
提供。
答案 2 :(得分:1)
^
和$
要求匹配中一行的开头和结尾。只需删除它们,您就可以得到答案。哦,你需要m
开关来传递换行符。
var r = /.{10,}/m;
r.test(value);