Regex 匹配字符串,前面不带a-z或a-z,且包含1324
使用正则表达式,我希望在以下情况下匹配文本中的字符串:Regex 匹配字符串,前面不带a-z或a-z,且包含1324,regex,Regex,使用正则表达式,我希望在以下情况下匹配文本中的字符串: 它们包含1324作为子字符串 1324子字符串前面没有一个或多个字符,如a-zA-Z 例如: 应匹配“1324test” 应匹配“1324” “测试测试:/1324test”应该匹配 “测试1324test”应匹配 “测试1324”应匹配 “test1324test”应不匹配 以下是我的尝试:[^a-zA-Z]+1324 如何执行此操作?使用反向查找: .*(?<![a-zA-Z])1324.* *(?使用反向查找: .*(?&
1324
作为子字符串1324
子字符串前面没有一个或多个字符,如a-zA-Z
- 应匹配“
”1324test
- 应匹配“
”1324
- “
”应该匹配测试测试:/1324test
- “
”应匹配测试1324test
- “
”应匹配测试1324
- “
”应不匹配test1324test
[^a-zA-Z]+1324
如何执行此操作?使用反向查找:
.*(?<![a-zA-Z])1324.*
*(?使用反向查找:
.*(?<![a-zA-Z])1324.*
*(?使用此正则表达式:
(?<![a-zA-Z])1324
(?
它使用了一个负的lookback(这里有一个解释)。这意味着它将检查1324
(lookback It)后面是否有字母([a-zA-Z]
)。如果有,它将失败
使用此正则表达式:
(?<![a-zA-Z])1324
(?
它使用了一个负的lookback(这里有一个解释)。这意味着它将检查1324
(lookback It)后面是否有字母([a-zA-Z]
)。如果有,它将失败
如果您的正则表达式风格不支持负面外观落后(如JS),您可以使用
(^|[^a-zA-Z])1324
匹配字符串的开头或非字母字符。如果您的正则表达式风格不支持负面外观落后(例如JS),您可以使用
(^|[^a-zA-Z])1324
匹配字符串或非字母字符的开头。这是我的尝试。我认为您的第二个测试用例应该是1324而不是1234
([^a-zA-Z]+|^)1324
更新:不需要加号链接。它只是广告开销。正确的例子如下
([^a-zA-Z]|^)1324
这是我的尝试。我认为您的第二个测试用例应该是1324而不是1234
([^a-zA-Z]+|^)1324
更新:不需要加号链接。它只是广告开销。正确的例子如下
([^a-zA-Z]|^)1324
您可以在不捕获的情况下匹配您不想要的内容,然后捕获您想要的内容,然后检查捕获的部分
/[a-z]1324|(1324)|.*/i
在JavaScript中,您的匹配将由
!!input.match(regexp)[1]
您可以在不捕获的情况下匹配您不想要的内容,然后捕获您确实想要的内容,然后检查捕获的部分
/[a-z]1324|(1324)|.*/i
在JavaScript中,您的匹配将由
!!input.match(regexp)[1]
在你的第二个例子中,你展示了1234
…你的意思是1324
?@l'l,是的,对不起,这是一个打字错误,我修正了。什么regexp语言?在你的第二个例子中,你展示了1234
…你的意思是1324
?@l'l,是的,对不起,这是一个打字错误,我修正了。什么regexp语言?对不起,这是一个打字错误,我修正了。为什么我们需要广告d+
,我认为它可以在没有+
的情况下工作?例如,+
的引入增加了大约40个额外的步骤。是的,它可以在没有加号的情况下工作,而且只会增加开销。正则表达式只需要在匹配前检查一个字符。我在发布后意识到了这一点。不幸的是,我已经发布了,并且我已经发布了现在改变它应该是不好的网络礼节。我仍然没有改变它,但我正在更新它。对不起,这是一个打字错误,我修正了它。为什么我们需要添加+
,我认为它可以在没有+
的情况下工作?例如,+
的引入增加了大约40个额外的步骤。是的,它可以在没有加号的情况下工作,只需添加加号即可它的开销。正则表达式只需要在比赛前检查一个字符。我在发布后意识到了这一点。不幸的是,我已经发布了,我认为现在更改它将是不好的网络礼仪。我仍然没有更改它,但我正在更新它。哇!只有37个步骤!哇!只有37个步骤!谢谢你的回复,但我认为这在ca中失败了如果提供的文本不包含1324,您可以尝试!!“test test”.match(/[a-z]1324|(1324)/i)[1]
…在这个答案中,您假设match将返回一个非空数组,如果像本例中那样返回空数组呢?!将抛出一个错误:未捕获类型错误:无法读取null的属性“1”
感谢您的响应,但我认为如果提供的文本不包含1324,则此操作将失败,您可以尝试!!“测试”匹配(/[a-z]1324 |(1324)/i)[1]
…在这个答案中,您假设match将返回一个非空数组,如果空数组像本例中那样返回呢?!将抛出一个错误:未捕获类型错误:无法读取null的属性“1”
为什么*
?为什么不删除它们?我认为它们正在添加额外的步骤,例如为什么不如下:,这减少了大约100多个步骤(与251个步骤相比减少了44个步骤)?因为您的问题明确指出您希望正则表达式匹配包含1324作为子字符串的字符串(您的要求的第1点)。您提供的正则表达式只匹配字符串的1324部分,而不匹配字符串的其余部分。我的正则表达式匹配整个字符串。啊哈,明白了。感谢您的澄清为什么*
?为什么不删除它们?我想他们正在添加额外的步骤,例如,为什么不如下:,这将减少大约100多个步骤(44个步骤,而251个步骤)?因为您的问题明确说明您希望正则表达式匹配包含1324作为子字符串的字符串(您要求的第1点)。您提供的正则表达式只匹配字符串的1324部分,而不匹配字符串的其余部分。我的正则表达式匹配整个字符串。啊哈,明白了。感谢您的澄清