我正在尝试匹配长度> 10的字符串
var value = "Lorem Ipsum is simply dummy text of the printing and type";
/^.{10,}$/.test(value);
返回true;
但是,如果我有一个带有新行字符的字符串,那么它就失败了。
如何更新正则表达式来解决这个问题
我知道我可以检查。length> 10或者用空格替换新行。但是,我想更新正则表达式。
JavaScript没有dot matches newlines
的原生选项。为了解决这个问题,使用不同的选择器:
[Ss]
匹配任何Whitespace
或Non-Whitespace
字符。
var s = "somentextn",
r = /^[Ss]{10,}$/;
console.log(r.test(s));
还有,必不可少的小提琴:http://jsfiddle.net/kND83/
有一些库,如http://xregexp.com/,为dot matches newlines
添加选项,但它们所做的只是在[Ss]
中为您的Regex中的.
添加选项。
如果你只是测试长度,你应该使用.length
。如果坚持使用regex,点实际上匹配除了换行符以外的所有内容。您可以通过搜索sS
来更改此设置:
([sS]{10,})
匹配任何空白和任何非空白,覆盖整个范围。遗憾的是,js regex不支持s
修饰符
^
和$
在匹配中指定一行的开始和结束。只要去掉它们,你就会得到答案。哦,你需要m
开关来传递换行符。
var r = /.{10,}/m;
r.test(value);