简单的javascript regexp与网址

时间:2016-01-11 19:35:15

标签: javascript regex

我正在努力使用regExp。

我只是想将传入的URL解析为我的应用程序。

这是我目前的RegExp:

var regexp = new RegExp('/users','i');
"/users".test(regexp); //Should return true
"/users/".test(regexp); //should return true
"/users?variable1=xxx&variable2=yyy&variableN=zzzz".test(regexp); //Should return true
"/users/?variable1=xxx&variable2=yyy&variableN=zzzz".test(regexp); //should return true;
"/users?variable1=xxx&variable2=yyy&variableN=zzzz/10".test(regexp); //Should return false
"/users/?variable1=xxx&variable2=yyy&variableN=zzzz/10".test(regexp); //should return false;
"/users/10".test(regexp); //should return false
"/users/10/contracts".test(regexp); //Should return false
"/users/10/contracts/10".test(regexp); //Should return false
"/users/anythingElseThatIsNotAQuestionMark".test(regexp); //Should return false

有人有善意帮助我吗?

希望你度过愉快的夜晚。

3 个答案:

答案 0 :(得分:2)

反过来regexp.test("/users")

  

test()方法执行搜索常规匹配   表达式和指定的字符串。返回true或false。

语法

regexObj.test(str)

MDN

答案 1 :(得分:1)

首先是RegExp.test(String)

然后这个正则表达式应该这样做:

/^\/users\/?(?:\?[^\/]+)?$/i

检查出来:https://regex101.com/r/mK8dU4/1

答案 2 :(得分:0)

/^\/users\/?(\?([^\/&=]+=[^\/&=]*&)*[^\/&=]+=[^\/&=]*)?$/i应该有效,并确认查询有效:



var regexp = /^\/users\/?(\?([^\/&=]+=[^\/&=]*&)*[^\/&=]+=[^\/&=]*)?$/i;

function test(str) {
  document.write(str + ": ");
  document.write(regexp.test(str));
  document.write("<br/>");
}

test("/users"); //should return true
test("/users/"); //should return true
test("/users?variable1=xxx&variable2=yyy&variableN=zzzz"); //should return true
test("/users/?variable1=xxx&variable2=yyy&variableN=zzzz"); //should return true
test("/users?variable1=xxx&variable2=yyy&variableN=zzzz/10"); //should return false
test("/users/?variable1=xxx&variable2=yyy&variableN=zzzz/10"); //should return false
test("/users/10"); //should return false
test("/users/10/contracts"); //should return false
test("/users/10/contracts/10"); //should return false
test("/users/anythingElseThatIsNotAQuestionMark"); //should return false
&#13;
&#13;
&#13;