结合已经提到的一些方法(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的。任何反馈表示赞赏。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)