我是javascript的正则表达式的新手,我在javascript中使用正则表达式。
我有两个场景
1)我有一个像aaa/+/bbb/+
这样的字符串,我希望使用正则表达式将此字符串与字符串aaa/1/bbb/hello123
和aaa/1/bbb/
匹配,并且两者都应返回true
。如果我通过aaa / 1 / bbb,那么它应该给false
2)如果我有字符串aaa /#那么它应匹配所有上述字符串并返回true
任何人都可以帮助我吗?
答案 0 :(得分:1)
在正则表达式中,+
会转换为[^/]*
,#
会转换为.*
。
下一步是转义输入字符串中的特殊字符。 This regex有这个目的。由于+
是一个特殊字符,因此我们必须手动进行无人机操作。
RegExp.escape= function(s) {
return s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
};
function matchesPattern(pattern, input) {
pattern = RegExp.escape(pattern); // escape special characters
pattern = pattern.replace(/\\\+/g, "[^/]*"); // replace '\+'
pattern = pattern.replace(/#/g, ".*"); // replace '#'
pattern = new RegExp("^" + pattern + "$"); // construct regex
return pattern.test(input); // test input
}
console.log(matchesPattern("aaa/+/bbb/+", "aaa/1/bbb/hello123"));
console.log(matchesPattern("aaa/+/bbb/+", "aaa/1/bbb/"));
console.log(matchesPattern("aaa/+/bbb/+", "aaa/1/bbb"));
console.log(matchesPattern("aaa/#", "aaa/1/bbb/hello123"));
console.log(matchesPattern("aaa/#", "aaa/1/bbb/"));
console.log(matchesPattern("aaa/#", "aaa/1/bbb"));
答案 1 :(得分:0)
正则表达式^aaa\/[0-9]+\/bbb\/[\w\d]*$
将匹配以下字符串:
aaa/1/bbb/hello123
aaa/1/bbb/
这些字符串将不匹配:
aaa/1/bbb
我不清楚你的第二种情况 - 你是说正则表达式也应该匹配字符串aaa/#
吗?
您可以在javascript中使用正则表达式:
var re = /^aaa\/[0-9]+\/bbb\/[\w\d]*$/;
var matches = re.test("aaa/1/bbb/");
if (matches) { console.log("it matches!"); }