正则表达式匹配当前URL中的字符串,包括通配符

时间:2015-10-09 22:26:24

标签: javascript regex

使用JavaScript匹配部分网址并使用通配符的正则表达式是什么?

例如:

匹配所有网页:/pages/*

匹配名为about /pages/about

的网页

匹配包含字符串large的所有产品:/products/*large*

https://jsbin.com/toxemanewe/1/edit?js,console,output

2 个答案:

答案 0 :(得分:2)

我对您的代码进行了一些小改动:

var patterns = [
  'about',
  'checkout',
  'contact'
];

var str = 'https://myurl.com/page/about/';

for (i=0; i<patterns.length; i++) {

  if ((new RegExp(patterns[i])).test(str)) {
//----^^^^^^^^^^^^^^^^^^^^^^^^^  look here how to instantiate the regex

    console.log('matched pattern: '  +  patterns[i]);
//----------------------------------^^^ look here plus sign instead comma

  }

}

我评论了这些更新。

希望它有所帮助。

答案 1 :(得分:1)

正如您的问题所要求的那样,用于3个示例的正则表达式是: -

/ pages / * - 在'/ pages /'

之后使用。*
/\/pages\/.*/.test(str);

/ pages / about - 完全匹配'/ pages / about'

/\/pages\/about/.test(str);

/ products / * large * - 匹配'/ products /'然后包含'large'

/\/products\/.*(?:large).*/.test(str);

并在您的示例中使用,如

var patterns = [
  '/pages/.*',
  '/pages/about',
  '/products/.*(?:large).*'
];

for (i=0; i<patterns.length; i++) {
  if ((new RegExp(patterns[i])).test(window.location.href)) {  
    console.log('matched pattern ' + patterns[i]);
  }
}

Fiddle