使用RegEx数组的JavaScript字符串测试

时间:2014-12-11 10:18:19

标签: javascript regex

我对JavaScript中的RegEx有一些疑问,因为我在RegEx中并不擅长。

我有一个String,我想将它与一些RegEx表达式数组进行比较。

首先我尝试了一个RegEx并且它不起作用。我也想解决这个问题。

function check(str){
var regEx = new RegEx("(users)\/[\w|\W]*");
var result = regEx.test(str);
if(result){
//do something
}
}

它无法正常工作。 如果我传递 用户 ,则不匹配。如果我传递用户/ 用户/ somestring ,则表示匹配。

如果我将RegEx更改为(usersGroupList)[/ \ w | \ W] * ,那么它匹配包含字符串users的任何字符串

fdgdsfgg的 userslist /数据

我想匹配,如果字符串是用户,或者它应该包含 users / something users /

我还希望字符串与类似的正则表达式数组进行比较。

我想将字符串 str 用户用户/某事列表进行比较list / something anothermatch anothermatch / something 。如果它匹配任何这些表达式我想做某事。

我该怎么做?

由于

3 个答案:

答案 0 :(得分:2)

然后,您必须使最后一组可选。您可以通过捕获组中的/ something部分并使用?跟随它,这使得前一个标记(此处为捕获的组)可选。

var regEx = new RegExp("(users)(\/[\w|\W]*)?");

答案 1 :(得分:1)

如何制作:

  1. 最后一组可选
  2. 从字符串的开头
  3. 开始

    像这样:

    var regEx = new RegExp("^(users)(\/[\w|\W]*)?");
    

    同样适用于所有其他情况,例如: list

    var regEx = new RegExp("^(list)(\/[\w|\W]*)?");
    

    一体化方法

    var regEx = new RegExp("^(users|list|anothermatch)(\/[\w|\W]*)?");
    

    更多Generic

    var keyw = ["users", "list", "anothermatch"];
    var keyws = keyw.join("|"); 
    var regEx = new RegExp("^("+keyws+")(\/[\w|\W]*)?");
    

答案 2 :(得分:0)

你还没有/可选。试试这个

(users)\/?[\w|\W]*