是否有一种方法只返回匹配项,如果没有匹配项则返回 null?
这可能是大脑卡住,但是否有一种方法只返回匹配项,如果不匹配则返回 null?
例如,如果我只想返回第一个变量,否则返回 null:
var value:String = "image/png".toLowerCase();
var result:String = value.find(/image/(png|jpg|jpeg|gif)/);
if (result=="png") {
// do something
}
我知道有 replace
和 exec
和 match
并且它们返回数组等,但我只是在寻找一种返回我的第一个的方法匹配或为空。
如果没有这样的功能,我希望有。我多么希望有上帝啊。
最佳答案
没有特定的方法可以做到这一点。最接近的方法是 String.match
或 RegExp.exec
并且在这里没什么区别,因为正则表达式没有全局修饰符。一旦您使用带有全局修饰符的正则表达式,您将别无选择,只能使用 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)
,但尽管它在内部工作得更好,但它的可读性会降低。
关于javascript - 是否有一种方法只返回 ActionScript 中 RegEx 的匹配项或第一个变量匹配项或 null?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41245366/