RegEx使用JavaScript在不在现场的测试人员中工作

时间:2015-01-21 17:59:51

标签: javascript regex

我正在尝试编写一个RegEx,如果字符串以/http:开头,并且只允许alpha numeric charactersdash和{{1},则返回true }。任何空白区域和任何其他特殊字符在测试时都应触发错误响应。

https://www.regex101.com/#javascript进行测试时,下面的工作正常(除了它允许使用特殊字符,我还没想出怎么做)。不幸的是,当我在我的网站中实现它并使用underscore进行测试时返回false。我做错了什么,是否有更好的regEx可以实现我的目标?

/products/homedecor/tablecloths

2 个答案:

答案 0 :(得分:1)

将未转义的连字符保留在字符类的第一个或最后一个位置:

^(\/|(?:http:))[/.a-zA-Z0-9_-]+$

甚至更简单:

^(\/|http:)[/\w.-]+$

由于\w[a-zA-Z0-9_]

相同

要匹配网址,您可能还需要匹配DOT和正斜杠。

答案 1 :(得分:1)

只需从正则表达式中删除\S+,然后将连字符放在第一个或最后一个字符类中。请注意,\S+匹配任何非空格字符(包括非单词字符)。

^(\/|http:)[a-zA-Z0-9_-]+$