gpt4 book ai didi

任何数字后跟特定字符的 PHP 正则表达式

转载 作者:行者123 更新时间:2023-12-04 01:02:06 25 4
gpt4 key购买 nike

我正在寻找验证一个字符串,该字符串具有任意数量的数字后跟一个特定字符,例如:

“1w 3d 5h 3m”和“32d 5h 3m”

我目前正在使用以下正则表达式:/\d+[wdhm]\z/ 但如果字符串包含我不想要的字母,这将不起作用,例如:

“3pp 2h 35m”和“2d 5qq 3m”

字符串中唯一允许的字母可以是“w”、“d”、“h”和“m”,如果出现一次则必须按该顺序排列,例如“2d 35m”是可以接受的,但“3h 1w” "不是因为顺序错误。

最佳答案

您可以将此正则表达式与多个可选匹配项和前瞻性结合使用:

^(?=\d)(?:\d+w\h*)?(?:\d+d\h*)?(?:\d+h\h*)?(?:\d+m)?$

RegEx Demo

正则表达式详细信息:

  • ^:开始
  • (?=\d):先行断言数字的存在以禁止空匹配
  • (?:\d+w\h*)?:匹配 1+ 个数字后跟 w 和 0+ 个空格
  • (?:\d+d\h*)?:匹配 1+ 个数字后跟 d 和 0+ 个空格
  • (?:\d+h\h*)?:匹配 1+ 个数字后跟 h 和 0+ 个空格
  • (?:\d+m)?:匹配 1+ 位后跟 m
  • $:结束

如果您不想让组件之间的间距为零,请使用:

^(?=\d)(?:\d+w\h*)?(?:\b\d+d\h*)?(?:\b\d+h\h*)?(?:\b\d+m)?$

RegEx Demo 2

如果你只想允许单个间距,那么使用:

^(?=\d)(?:\d+w\h)?(?:\b\d+d\h)?(?:\b\d+h\h)?(?:\b\d+m)?$

RegEx Demo 3

关于任何数字后跟特定字符的 PHP 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67957702/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com