JavaScript的String.indexOf()是否有允许正则表达式的版本?

JavaScript的String.indexOf()是否有允许正则表达式的版本?,第1张

JavaScript的String.indexOf()是否有允许正则表达式的版本?

结合已经提到的一些方法(indexOf显然相当简单),我认为这些功能可以解决问题:

String.prototype.regexIndexOf = function(regex, startpos) {    var indexOf = this.substring(startpos || 0).search(regex);    return (indexOf >= 0) ? (indexOf + (startpos || 0)) : indexOf;}String.prototype.regexLastIndexOf = function(regex, startpos) {    regex = (regex.global) ? regex : new RegExp(regex.source, "g" + (regex.ignoreCase ? "i" : "") + (regex.multiLine ? "m" : ""));    if(typeof (startpos) == "undefined") {        startpos = this.length;    } else if(startpos < 0) {        startpos = 0;    }    var stringToWorkWith = this.substring(0, startpos + 1);    var lastIndexOf = -1;    var nextStop = 0;    while((result = regex.exec(stringToWorkWith)) != null) {        lastIndexOf = result.index;        regex.lastIndex = ++nextStop;    }    return lastIndexOf;}

显然,修改内置的String对象将对大多数人发出危险信号,但这可能不是什么大问题了。只需意识到这一点


更新:编辑,

regexLastIndexOf()
以便
lastIndexOf()
现在看起来像。请让我知道它是否仍然失败以及在什么情况下。


更新:通过此页面上的评论以及我自己的所有测试。当然,这并不意味着它是防d的。任何反馈表示赞赏。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5559516.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-14
下一篇 2022-12-14

发表评论

登录后才能评论

评论列表(0条)

保存