使用正则表达式作为模板

时间:2016-08-22 12:42:07

标签: javascript regex

我有以下正则表达式:

var legal = /[a-zA-Z0-9\._\-]+/;

应该定义唯一的有效字符串是由[]内的字符组成的字符串,重复正数次。

所以,以下工作正常:

legal.test("a"); // => true
legal.test("/"); // => false

然而,这不起作用:

legal.test("a/"); // => true

应该是假的。我尝试在ReGeX的末尾添加一个$来表示行尾,这有帮助,但并非总是如此:

var legal2 = /[a-zA-Z0-9\._\-]+$/;

legal2.test("a"); // => true
legal2.test("a/"); // => false
legal2.test("a/a"); // => true

最后一个应该是false,因此$最终并不总是有帮助。

我需要对我的正则表达式做些什么才能让它像一个"模板"要验证哪些字符串?

1 个答案:

答案 0 :(得分:4)

您需要在前面用插入符号(^)指示字符串匹配的开头:

^[a-zA-Z0-9\._\-]+$

现在只匹配仅包含允许字符的字符串。

您的模式[a-zA-Z0-9\._\-]+$a的最后a/a匹配,因为您没有严格提及从哪里开始匹配,但您确实将结束条件强加给$