Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RegEx在tester中工作,而不是在使用JavaScript的现场_Javascript_Regex - Fatal编程技术网

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_-]+$