我对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 。如果它匹配任何这些表达式我想做某事。
我该怎么做?
由于
答案 0 :(得分:2)
然后,您必须使最后一组可选。您可以通过捕获组中的/ something部分并使用?
跟随它,这使得前一个标记(此处为捕获的组)可选。
var regEx = new RegExp("(users)(\/[\w|\W]*)?");
答案 1 :(得分:1)
如何制作:
像这样:
var regEx = new RegExp("^(users)(\/[\w|\W]*)?");
同样适用于所有其他情况,例如: list
:
var regEx = new RegExp("^(list)(\/[\w|\W]*)?");
var regEx = new RegExp("^(users|list|anothermatch)(\/[\w|\W]*)?");
var keyw = ["users", "list", "anothermatch"];
var keyws = keyw.join("|");
var regEx = new RegExp("^("+keyws+")(\/[\w|\W]*)?");
答案 2 :(得分:0)
你还没有/可选。试试这个
(users)\/?[\w|\W]*