如何在JavaScript中使用RegExp?

时间:2016-08-10 03:20:22

标签: javascript

我是javascript的正则表达式的新手,我在javascript中使用正则表达式。

我有两个场景

1)我有一个像aaa/+/bbb/+这样的字符串,我希望使用正则表达式将此字符串与字符串aaa/1/bbb/hello123aaa/1/bbb/匹配,并且两者都应返回true。如果我通过aaa / 1 / bbb,那么它应该给false

2)如果我有字符串aaa /#那么它应匹配所有上述字符串并返回true

任何人都可以帮助我吗?

2 个答案:

答案 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!"); }