【问题标题】:Javascript regexObj.exec() says TypeError: pattern.exec is not a functionJavascript regexObj.exec() 说 TypeError: pattern.exec is not a function
【发布时间】:2013-12-16 12:39:09
【问题描述】:

我想在 javascript 中使用正则表达式从 img 标签中提取图像名称。我的问题是console.log() 抛出异常:TypeError: pattern.exec is not a function

JS:

$("label.btn-danger").on('click',function(e){
    e.preventDefault();
    var src = $(this).parents("label").find("img").attr("src");
    var pattern = "/\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/ig";
    var result = pattern.exec(src)
    console.log(result);
});

【问题讨论】:

  • 去掉引号,现在你只有一个字符串?
  • var pattern = /\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/ig;
  • 谢谢,还有 1 个问题:这会返回一个有 2 个索引的数组吗?
  • [0] 元素将是完全匹配的输入,[1] 将是第一个匹配的组。
  • 尝试将.attr("src") 更改为prop("src") 看看会发生什么

标签: javascript jquery regex url


【解决方案1】:
var pattern = "/\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/ig";

创建一个字符串。字符串没有方法exec。您的意思是 RegExp 文字:

var pattern = /\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/ig;

我想你也可以在这里使用RegExp.test 方法,如果你只需要确认src 符合给定的模式:

var result = /\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/ig.test(src);

如果您需要一个匹配的值,请使用RegExp.match

var result = src.match(/\/([A-Z0-9_-]{1,}\.(?:png|jpg|gif|jpeg))/ig);
// let src be '../images/someimage.png'
// then result[0] = '/someimage.png'

【讨论】:

  • 我无法使用 result[1] 提取图像名称。我该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 1970-01-01
  • 2014-12-30
  • 2021-01-21
相关资源
最近更新 更多