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

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

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

最佳答案

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

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


甚至更简单:

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


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

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

09-30 15:48
查看更多