我正在使用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>
答案 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.' -]*$";
还要记住,-
在字符类的第一个和最后一个位置使用时不需要转义,而且.
也不需要在字符类中转义。