我正在尝试编写一个RegEx,如果字符串以/
或http:
开头,并且只允许alpha numeric characters
,dash
和{{1},则返回true }。任何空白区域和任何其他特殊字符在测试时都应触发错误响应。
在https://www.regex101.com/#javascript进行测试时,下面的工作正常(除了它允许使用特殊字符,我还没想出怎么做)。不幸的是,当我在我的网站中实现它并使用underscore
进行测试时返回false。我做错了什么,是否有更好的regEx可以实现我的目标?
/products/homedecor/tablecloths
答案 0 :(得分:1)
将未转义的连字符保留在字符类的第一个或最后一个位置:
^(\/|(?:http:))[/.a-zA-Z0-9_-]+$
甚至更简单:
^(\/|http:)[/\w.-]+$
由于\w
与[a-zA-Z0-9_]
要匹配网址,您可能还需要匹配DOT和正斜杠。
答案 1 :(得分:1)
只需从正则表达式中删除\S+
,然后将连字符放在第一个或最后一个字符类中。请注意,\S+
匹配任何非空格字符(包括非单词字符)。
^(\/|http:)[a-zA-Z0-9_-]+$