javascript - "?:^"正则表达式是什么意思?

标签 javascript regex

我正在查看这个子表达式(这是在 JavaScript 中):

(?:^|.....)

我知道 ? 跟在一个字符后面时表示“零次或一次”,但不确定在这种情况下它是什么意思。

最佳答案

在处理群组时,您通常有几个选项可以修改群组的行为:

(foo)     // default behavior, matches "foo" and stores a back-reference
(?:foo)   // non-capturing group: matches "foo", but doesn't store a back-ref
(?i:foo)  // matches "foo" case-insensitively
(?=foo)   // matches "foo", but does not advance the current position
          // ("positive zero-width look-ahead assertion")
(?!foo)   // matches anything but "foo", and does not advance the position 
          // ("negative zero-width look-ahead assertion")

仅举几例。

它们都以“?”开头,这是表示组修饰符的方式。在这种情况下,问号与可选性无关。

它只是说:

(?:^foo)  // match "foo" at the start of the line, but do not store a back-ref

有时,存储对你无论如何都不会使用的匹配的某些部分的反向引用是有点矫枉过正了。当这个组只是为了使一个复杂的表达式成为原子时(例如,它应该作为一个整体匹配或失败),存储一个反向引用是一种不必要的资源浪费,甚至可以稍微减慢正则表达式的速度。有时,您只想成为第 1 组,第一个与您相关的组,而不是正则表达式中的第一个组

关于javascript - "?:^"正则表达式是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/603069/

相关文章:

java - 使用正则表达式拆分简单的数学表达式

python - 使用正则表达式从Python字符串中提取模式

javascript - 使用 Ajax 和经典 ASP 查询数据库

javascript - 如何使用 Three.JS 通过单键按下制作动画

javascript - Angular Material 输入单击时选择全部?

javascript - 检查 HTML 表列中是否存在值,jquery

java - 根据某些值在java中分割字符串

javascript - 如何为多种 Accordion 样式缩短我的 JQuery 脚本?

php - 单词 null 或双引号中的字符串的正则表达式

regex - Solr edismax 支持哪些正则表达式功能?