问题标签 [regex-alternation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
79 浏览

regex - 如何正则表达式字符串

是否可以使用正则表达式进行检查:

  1. 完整的字符串是数字
  2. 第一个字符是 7 或 8,那么字符串的完整长度必须是 11
  3. 第一个字符是 1 那么字符串的完整长度必须是 10
  4. 或者第一个字符是 0,那么字符串的完整长度必须是 18 并且字符 8 必须是 8 或 7 或者字符 9 必须是 1

我希望你能明白我的意思。希望这些例子能帮助你明白我的意思。

这是我的解决方案(不完全工作->我不知道如何检查它是否以 0 开头并且长度为 18 个字符,位置 8 上的字符必须是 7 或 8 或位置 9 上的字符必须是 1) :

例如:

  • 8 5556987456 -> 以 8 开头,长度为 11 -> 匹配
  • 7 5556987456 -> 以 7 开头,长度为 11 -> 匹配
  • 1 555698745 -> 以 1 开头,长度为 10 -> 匹配
  • 0 000000 8 5556987456 -> 以 0 开头,长度为 18,在 pos 8 上是 8 -> 匹配
  • 0 000000 7 5556987456 -> 以 0 开头,长度为 18,在 pos 8 上为 7 -> 匹配
  • 0 0000000 1 556987456 -> 以 0 开头,长度为 18,在 pos 9 上是 1 -> 匹配

谢谢!

0 投票
1 回答
322 浏览

regex - Go中的正则表达式不匹配

我有一个在 Go 中不匹配的正则表达式。

但是在正则表达式游乐场中,它匹配得很好:https ://regex101.com/r/VNDXcQ/2 。

它匹配 JS 注释。

这是代码:

为什么会这样?

0 投票
2 回答
196 浏览

regex - Raku 正则表达式:如何知道哪个组被交替捕获

使用 perl(以及几乎任何正则表达式风格),每个组都按顺序编号。

例如,这段代码:

印刷xbar

但是,对于 Raku,它的行为就像有一个分支重置组包装了整个正则表达式:

印刷barx

我对这种行为没意见:)。但是,有时了解在交替下捕获了哪个组是有用的。

我怎样才能知道有 raku 的组?

0 投票
1 回答
211 浏览

regex - Raku 正则表达式:不一致的最长令牌匹配

Raku 的正则表达式应该匹配最长的标记。

事实上,在这段代码中可以看到这种行为:

但是,当文本在变量中时,它的工作方式似乎不同:

为什么它们以不同的方式工作?有没有办法使用变量并且仍然匹配最长的标记?

0 投票
1 回答
59 浏览

regex - 如何指示 Scala 的正则表达式匹配器选择最左边的交替

尝试从中检索值时遇到了正则表达式替换问题scala.util.matching.Regex。我在使用该方法时尝试了默认状态和unanchored初始化状态。findAllMatchIn

使用(1e)|(a1)带有示例文本的 regex 模式a1e,我希望收到1e,因为我已将其放置在第一个交替位置。我很困惑为什么我实际上收到的是第二个a1交替位置的值。

在查看了处理跨输入字符串的多个匹配项的许多问题之后,除了将它们按正确的顺序放置之外,我还没有找到任何解决如何处理交替的问题,我已经这样做了。

如果有的话,我可以使用什么方法来取回我想要的值1e,或者返回两个值,一个用于匹配的每个交替?

下面是我的 IntelliJ Scala 工作表中的代码示例(这里是 Scastie 中的代码):

0 投票
4 回答
46 浏览

regex - 我想要对使用 IP 地址和子网的字符的正则表达式支持

我有一个 ^[a-zA-Z0-9.*?]+$支持 IP 地址的正则表达式,例如31.202.216.280如何修改给定的正则表达式,使我可以支持具有这样 IP 地址的子网31.202.216.280/38