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 isset()等效: - JavaScript
JavaScript 使用JavaScript更改CSS(JavaScript)