javascript正则表达式从字符串结尾搜索到开头

时间:2017-06-09 01:14:38

标签: javascript regex

是否可以使用正则表达式从字符串结尾搜索到开头?

例如我有一个字符串:" a2bba2b"

我知道我需要最后一次出现/ a2 /并且使机器通过整个字符串看起来非常低效,这可能会很长。我知道针会在靠近字符串末端(haystack)的地方,所以我想颠倒顺序只是告诉脚本从头到尾搜索以节省一些资源。 正则表达式似乎是一种匹配更复杂字符串的方法。编写复杂的正则表达式比使用自己的搜索函数更容易。

那么是否有一种方法可能是一个标志或某种东西来反转搜索顺序以匹配从输入字符串的结尾到开始的正则表达式。是否有任何现代语言支持这样的东西?如果不是为什么?

2 个答案:

答案 0 :(得分:1)

不,JavaScript RegExp不允许从字符串的末尾进行搜索。通常的解决方法是使用贪婪点匹配模式使引擎抓取整个字符串,然后回溯以找到最后一次出现(如/.*a\d/),但如果大字符串实际上不包含此字符串将会很痛苦图案。

如果目的是提取最后一场比赛,你可以获得所有比赛并抓住最后一场比赛(s.match(/a\d/g).pop()(当然,必须有空检查))

有一些正则表达式引擎实际上允许你从右到左解析字符串。

答案 1 :(得分:0)

字符串反转你的字符串和你的正则表达式怎么样?然后第一次出现?