我正在寻找一个0-9位的字符串,没有其他字符。
这是警告我" false"值:
var regex = new RegExp('^[\d]{0,9}$');
alert(regex.test('123456789'));
这些返回true,我理解为什么(^和$表示整个字符串需要匹配,而不仅仅是字符串中的匹配):
var regex = new RegExp('[\d]{0,9}');
alert(regex.test('123456789'));
-
var regex = new RegExp('[\d]{0,9}');
alert(regex.test('12345678934341243124'));
然后返回true:
var regex = new RegExp('^[\d]{0,9}');
alert(regex.test('123456789'));
为什么,当我添加" $"最后这可能会失败吗?
我需要做些什么来解决它?
答案 0 :(得分:8)
使用时
var regex = new RegExp('^[\d]{0,9}$');
语法,你将正则表达式作为
/^[d]{0,9}$/
请注意\d
已变为d
。
此正则表达式/^[d]{0,9}$/
仅匹配d
0到9次。
RegExp
使用字符串来定义正则表达式,\
也用作字符串中的转义符号,因此\
中的\d
被视为转义字符。< / p>
通过将\
与其他\
一起推进来逃避var regex = new RegExp('^[\\d]{0,9}$');
。
RegExp
我建议您使用正则表达式文字语法而不是令人困惑的var regex = /^\d{0,9}$/;
语法。
true
修改强>
使用var regex = new RegExp('^[\d]{0,9}');
时获得d
的原因是因为正则表达式意味着字符串应以任何数量的d
开头,包括0到9。因此,当字符串不以0
开头时,由于var regex = /^\d{1,9}$/;
是最小的出现次数,因此条件是分层的。
您可能想要检查字符串是否以1到9位开头。
render: function() {
this.model.each(function(m) {
if(~m.get('partner_id') === 0)
return;
/* render m here */
});
}
答案 1 :(得分:2)
在定义RegExp对象时,应该使用正则表达式文字(不带引号并使用开始和结束斜杠)。当正则表达式保持不变时,这是推荐的方法,这意味着每次使用它时都不需要编译它。这为您提供了理想的结果:
<add key="ArchiveDirectory" value="C:\Users\rsanchez\Desktop\testing\{foldername}\Archives\" />
答案 2 :(得分:-5)
因为$表示行尾,而你的字符串没有行尾作为最后一个字符
可能您正在寻找“\ z”