JavaScript中的替代方案

时间:2015-07-15 06:31:32

标签: javascript html regex regex-lookarounds

我尝试在JavaScript中使用lookahead / lookbehind(在Regular-Expressions.info中描述),并发现它们不受支持。

我实际上要做的是抓住darwin后面没有。darblabla。因此,字符串true应返回darwinblabla,而false应为/dar/i.test(string) && !/darwin/i.test(string)

现在,我的解决方案是:<table class="table" id="tablepdf">

这看起来很长,有没有更短的解决方案(正则表达式字符串?),可以取代当前的声明吗?

3 个答案:

答案 0 :(得分:1)

Javascript应该支持负面预测。

alert(/dar(?!win)/.test('darblahblah'))
alert(/dar(?!win)/.test('darwin'))

答案 1 :(得分:1)

这是一个解决方案

^dar(?!win)

Regular expression visualization

Debuggex Demo

修改

关于你的第二个问题

^(?!cyg)win

Regular expression visualization

Debuggex Demo

答案 2 :(得分:1)

您不能在JavaScript中使用look-behinds,但可以使用预见。

因此,这将产生false

&#13;
&#13;
document.write(/\bdar(?!win)/i.test("darwin"));
&#13;
&#13;
&#13;

对于后视,在大多数情况下,您可以通过使用捕获组,反转字符串和匹配或构建自己的解析器来解决该限制。

这是一种结合/win/i.test(string) && !/cyg win/i.test(string)

的方法

&#13;
&#13;
document.write(/niw(?!\s+gyc\b)/.test('cyg win'.split("").reverse().join("")));
document.write("<br/>");
document.write(/niw(?!\s+gyc\b)/.test('darwin'.split("").reverse().join("")));
&#13;
&#13;
&#13;

注意模式 - niw(?!\s+gyc\b) - 必须颠倒。