RegEx在tester中工作,而不是在使用JavaScript的现场
我正在尝试编写一个正则表达式,如果字符串以RegEx在tester中工作,而不是在使用JavaScript的现场,javascript,regex,Javascript,Regex,我正在尝试编写一个正则表达式,如果字符串以/或http:开头,并且只允许字母数字字符,破折号和下划线返回true。测试时,任何空格和任何其他特殊字符都应触发错误响应 在进行测试时,下面的代码运行良好(除了它允许特殊字符,我还没有弄清楚如何执行)。不幸的是,当我在我的站点中实现它并用/products/homedecor/tableCloth测试它时,返回false。我做错了什么?是否有更好的正则表达式可以用来实现我的目标 ^(\\/|(?:http:))\S+[a-zA-Z0-9-_]+$ 在
/
或http:
开头,并且只允许字母数字字符
,破折号和下划线
返回true。测试时,任何空格和任何其他特殊字符都应触发错误响应
在进行测试时,下面的代码运行良好(除了它允许特殊字符,我还没有弄清楚如何执行)。不幸的是,当我在我的站点中实现它并用/products/homedecor/tableCloth
测试它时,返回false。我做错了什么?是否有更好的正则表达式可以用来实现我的目标
^(\\/|(?:http:))\S+[a-zA-Z0-9-_]+$
在字符类中的第一个或最后一个位置保留未转义连字符:
^(\/|(?:http:))[/.a-zA-Z0-9_-]+$
或者更简单:
^(\/|http:)[/\w.-]+$
因为\w
与[a-zA-Z0-9]相同
要匹配URL,您可能还需要匹配点和正斜杠。只需从正则表达式中删除\S+
,并在第一个或最后一个字符类中放置连字符。请注意,\S+
匹配任何非空格字符(包括非单词字符)
那么url中的所有/
呢?anubhava和Avinash都有有用的答案。非常感谢。正则表达式很容易变得过于复杂,弄不清楚也令人沮丧。问题解决了!
^(\/|http:)[a-zA-Z0-9_-]+$