【问题标题】:Regex look-behinds in textcomplete.jstextcomplete.js 中的正则表达式后视
【发布时间】:2014-11-12 18:59:29
【问题描述】:

我有textcomplete.js 插件,可以搜索@.... 之后的所有内容,使用这个正则表达式:

/\B@([\-+\w]*)$/

我像这样在 span 中返回文本:

<span contenteditable="false" class="highlight">@example</span>&nbsp;

在我的网页文本中,我看到它是这样的:

@example |

( | -> 我的光标位置)

如果像这样用光标返回:

@example|

textcomplete 触发并显示下拉菜单,但我不需要它,所以我尝试找到方法来更改我的正则表达式,以便它在以

开头时找不到@text
<span>@text

我试试这个,在线正则表达式,它有效:

/\B^(?!\>)@([\-+\w]*)$/  

但在我的项目中不起作用。 我试过something like this,但这对我来说有点太难了

谁能帮帮我?

编辑: 几句话 我想找到正则表达式,找到这个:

@exampletext

但是没有找到这个:

<span>@exampletext

当光标在单词的最后一个字符后面时

【问题讨论】:

  • 您能否详细说明您的代码“不起作用”的原因?你期待什么,实际发生了什么?如果您遇到异常,请发布发生异常的行和异常详细信息。
  • “这对我来说有点太难了”不是问题陈述。包括意外结果或异常是什么,并清楚地说明问题。
  • 问题是我想在那些“@texts”上禁用 textcomplete,它以 开头,因为当我写 '@example' 时,我需要 textcomplete 下拉菜单,但是当我得到那个词,并在我的文本中用'@example'替换它,然后我不需要显示下拉菜单,当光标位于这个词的末尾时
  • 试试这个^(?:(?!&lt;span&gt;).)*@

标签: javascript regex regex-lookarounds


【解决方案1】:

你可以这样使用:

(^(?!@).).+

示例及说明:http://regex101.com/r/jL2fH0/2

它在这里所做的是检查以确保字符串在匹配其余字符串之前不以 @ 开头。请注意,在此示例中,我添加了 gmi 标志 - 根据您的要求,您可能不想使用这些标志,它们只是为了演示正则表达式的工作原理。

还请注意,由于 JavaScript 不支持负向回溯,因此我们必须执行此解决方法。

【讨论】:

  • 但是我需要它以@开头,我需要检查它是否以span开头。在正则表达式中,我只需要那些 @example ,它们不会以 开头
  • 真的不知道你在问什么,你的问题(和这个评论)不是很清楚。不过,我已经为您提供了一个很好的起点,因此希望您可以利用它并创建一个有效的表达式。
  • 在某些方面 - 我有文字。当我写@时,我想要我的 textcomplete 下拉列表。我用我的正则表达式得到它。但是在我从下拉列表中选择单词并将其插入到我的文本中之后,当我将光标放在该单词的末尾时,我不想看到下拉列表。但它发生了,因为正则表达式。动态“@word”和已经插入的“@word”之间的唯一区别是插入的单词前面有
  • 你就不能像&lt;span&gt;@那样做一些非常基本的事情吗?匹配 @ 并且不匹配任何其他内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多