我正在尝试编写一个RegEx,如果字符串以/
或http:
开头并且只允许alpha numeric characters
,dash
和underscore
,则返回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和正斜杠。