Regex 正则表达式:如果第一个字母是X,它应该以A或B结尾。我该怎么做?

Regex 正则表达式:如果第一个字母是X,它应该以A或B结尾。我该怎么做?,regex,Regex,密码的正则表达式问题: 应该以X或Y开头 后跟偶数(最多3位) 如果密码以X开头,则应以A或B结尾 有人能帮我吗?试试这个。这是Java,但表达式非常普通regex \\d{0,2}0到2位 [02468]是偶数 $字符串结尾 (?:非捕获组的开始 注意。双斜杠用于转义Java字符串斜杠,并将其作为单斜杠传递给正则表达式引擎。您可能需要为引擎调整为一个斜杠。给您: ^(((Y)(([0-9]){0,2}[02468]){1})|((X)(([0-9]){0,2}[02468]){1}(A

密码的正则表达式问题:

  • 应该以X或Y开头
  • 后跟偶数(最多3位)
  • 如果密码以X开头,则应以A或B结尾

有人能帮我吗?

试试这个。这是Java,但表达式非常普通
regex

  • \\d{0,2}
    0到2位

  • [02468]
    是偶数

  • $
    字符串结尾

  • (?:
    非捕获组的开始
注意。双斜杠用于转义Java字符串斜杠,并将其作为单斜杠传递给正则表达式引擎。您可能需要为引擎调整为一个斜杠。

给您:

^(((Y)(([0-9]){0,2}[02468]){1})|((X)(([0-9]){0,2}[02468]){1}(A|B){1}))$
  • ^
    是一行的开头
  • ()
    表示捕获组
  • |
    是或
  • [02468]
    表示偶数
  • {1,3}
    是一个 捕获组(1分钟,3分钟)
  • $
    是字符串的结尾
为了简化这一过程,如果你在Mac电脑上,我建议你下载一个名为“Patterns”的应用程序。Patterns可以让你在regex101等网站上进行测试时,不必等待服务器的响应,就可以轻松地使用正则表达式并查看发生了什么

以下是模式的外观:


如果您的正则表达式引擎支持它,您可以这样使用

(?:X(?=.*[AB]$)|Y)\d{0,2}[02468].*
--编辑

阅读更新后的问题后,这将是一个更好的方法

^(?:X(?=.*([AB]))|Y)\d{0,2}[02468]\1?$

它还使用a来匹配正面展望所捕获的字母。

“Regex”非常模糊。有许多不同的Regex引擎,具有不同的功能和语法。您需要弄清楚要在其中使用该Regex的语言/库/工具,并在问题中包含这些信息。(另外,你应该告诉我们你已经尝试了什么,以及你遇到了什么困难。这不是一个真正的“请为我做家庭作业”的网站。)@ruakh这是PHP,我成功地做到了,没有必要对某人的问题进行附加说明,并附带“我们在这里不做你的家庭作业”事情。无论如何,我在回答问题的人的帮助下成功地做到了,干杯。Op说最多3位数,所以
\\d
s应该是可选的,我想:
\\d{0,2}
它不应该匹配134这样的数字吗?也许我遗漏了一些东西。134是偶数。OP没有说偶数。但这是我的解释,所以我可能会错。@Adrian你的回答帮助我达到了我的目标,我看到了你的回答,并对其进行了修改,以便我也可以输入奇数,并且成功地做到了。现在,看看你是如何做到这一点的ted你的帖子,我看到我做的调整是正确的,所以相信我,你帮了很多忙:)
{1}
没用,
(a | B)
写得更好
[AB]
为什么会有这么多的捕获小组?他们会放慢进程。@toto我不是每天都使用正则表达式,我的朋友。我在等jenkins,我想我会在等的时候帮助别人。如果你有更好的方法,欢迎你发布答案。嗯,我喜欢它!+1很好!它很紧凑,但我不经常使用正则表达式很遗憾,你的表达式匹配任何3位值,从偶数开始,到奇数结束。我想这是因为
\d{0,2}[02468]
不匹配,但
[02468].
匹配。@WJS我正在更新我的答案:)我当然能理解这一点!:)
^(?:X(?=.*([AB]))|Y)\d{0,2}[02468]\1?$