Javascript regexObj.exec() 说 TypeError: pattern.exec is not a function

Posted

技术标签:

【中文标题】Javascript regexObj.exec() 说 TypeError: pattern.exec is not a function【英文标题】:Javascript regexObj.exec() says 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") 看看会发生什么 【参考方案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] 提取图像名称。我该怎么办?

以上是关于Javascript regexObj.exec() 说 TypeError: pattern.exec is not a function的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript介绍

javascript的题。

javascript JavaScript isset()等效: - JavaScript

JavaScript 使用JavaScript更改CSS(JavaScript)

JavaScript之基础-1 JavaScript(概述基础语法)

前端基础-JavaScript的基本概述和语法