使用最小长度和新行验证正则表达式

时间:2014-06-23 11:32:18

标签: javascript

我正在尝试匹配长度为>的字符串; 10

var value = "Lorem Ipsum is simply dummy text of the printing and type";
/^.{10,}$/.test(value);

返回true;

但是,如果我有一个带有新行字符的字符串,那么它就失败了。

如何更新正则表达式来修复它。

我知道我可以查一下.length> 10或用空格替换新行。但是,我想更新正则表达式。

3 个答案:

答案 0 :(得分:3)

如果您正在测试它的长度,则应该使用.length。如果你坚持使用正则表达式,那么点实际上会匹配除换行符之外的所有内容。您可以通过搜索\s\S来改变这种情况:

([\s\S]{10,})

这匹配任何空白和任何非空白,覆盖整个光谱。遗憾的是,js正则表达式不支持s修饰符。

答案 1 :(得分:3)

JavaScript没有dot matches newlines的原生选项。要解决此问题,请使用其他选择器:

[\S\s]

这将匹配任何WhitespaceNon-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);