Javascript 是否存在只返回ActionScript或null中正则表达式的匹配项或第一个变量匹配项的方法?
是否有一个方法只返回匹配项,如果没有匹配项则返回null 这可能是大脑冻结,但是否有一种方法只返回匹配项,如果没有,则返回null 例如,如果我只想返回第一个变量,否则返回null:Javascript 是否存在只返回ActionScript或null中正则表达式的匹配项或第一个变量匹配项的方法?,javascript,regex,actionscript-3,Javascript,Regex,Actionscript 3,是否有一个方法只返回匹配项,如果没有匹配项则返回null 这可能是大脑冻结,但是否有一种方法只返回匹配项,如果没有,则返回null 例如,如果我只想返回第一个变量,否则返回null: var value:String = "image/png".toLowerCase(); var result:String = value.find(/image/(png|jpg|jpeg|gif)/); if (result=="png") { // do something } 我知道有rep
var value:String = "image/png".toLowerCase();
var result:String = value.find(/image/(png|jpg|jpeg|gif)/);
if (result=="png") {
// do something
}
我知道有replace
和exec
和match
它们返回数组等,但我只是在寻找一个返回我的第一个匹配项或null的方法
如果没有这样的函数,我希望有。我多么希望有上帝啊 没有具体的方法可以做到这一点。最接近的方法是
String.match
或RegExp.exec
,因为regex没有全局修饰符,所以在这里没有什么区别。使用带有全局修饰符的正则表达式后,您将别无选择,只能使用RegExp.exec
使用String.match
或RegExp.exec
可以检查结果是否为null
,如果不是null
,则提取组1值以检查其是否为png
:
var pattern:RegExp = /image\/(png|jpg|jpeg|gif)/;
var str:String = "image/png".toLowerCase();
var m:Array = pattern.exec(str);
if (m != null)
{
if (m[1] == "png") {
// Do stuff
}
}
请注意,/
必须在正则表达式文本中转义
您也可以将模式稍微收缩为
(png | jpe?g | gif)
,但尽管它在内部工作得更好,但可读性会降低。这解决了问题,但您是说exec
是最接近我想要执行的功能吗?您只需要访问组1。使用String.match
或RegExp.exec
,由于regex没有全局修饰符,所以在这里差别不大。使用带有全局修饰符的正则表达式后,您将别无选择,只能使用RegExp.exec
。