Javascript Regex没有传递测试字符串

时间:2013-06-28 07:51:02

标签: javascript regex

我正在使用javascript正则表达式来测试字符串。它应该使文本字符串失败,但不知何故它传递它。有任何线索,这段代码有什么问题?

<script>
var format = "^[a-zA-Z\.\-' ]*[a-zA-Z]+[a-zA-Z\.\-' ]*";
var testingValue = "FN306716";
var regex = new RegExp(format);
if (regex.test(testingValue) == false) { 
alert('validation failed');
}
else {
alert('validation passed');
}
</script> 

2 个答案:

答案 0 :(得分:1)

只是猜测你在正则表达式末尾缺少$来测试完整的字符串。

var regex = /^[a-zA-Z\.\-' ]*[a-zA-Z]+[a-zA-Z\.\-' ]$/;

使用此正则表达式,您的输入将无法通过,因为它包含数字。

编辑:我已将其更新为使用正如在评论中指出的正则表达式文字。

答案 1 :(得分:0)

您缺少$(输入锚定结束):

正则表达式应该是:

var format = "^[a-zA-Z.' -]*[a-zA-Z]+[a-zA-Z.' -]*$";

还要记住,-在字符类的第一个和最后一个位置使用时不需要转义,而且.也不需要在字符类中转义。

现场演示:http://www.rubular.com/r/Q26cgQVJTm