gpt4 book ai didi

php - 用于匹配字母数字字符、下划线、句点和破折号的正则表达式,只允许在中间使用点和破折号

转载 作者:可可西里 更新时间:2023-11-01 13:40:22 24 4
gpt4 key购买 nike

目前,我正在使用这个:

if (preg_match ('/^[a-zA-Z0-9_]+([a-zA-Z0-9_]*[.-]?[a-zA-Z0-9_]*)*[a-zA-Z0-9_]+$/', $product) ) {
return true;
} else {
return false
}

比如我要匹配:

  1. pro.duct-name_
  2. _pro.duct.name
  3. p.r.o.d_u_c_t.n-a-m-e
  4. product.-name
  5. ____pro.-_-.d___uct.nam._-e

但我不想匹配:

  1. pro..ductname
  2. .productname-
  3. -productname.
  4. -productname

最佳答案

答案是

/^[a-zA-Z0-9_]+([-.][a-zA-Z0-9_]+)*$/

如果只允许包含 .--. 的字符串不匹配。无论如何,你为什么要允许他们匹配?但是如果你真的需要这些字符串也匹配,一个可能的解决方案是

/^[a-zA-Z0-9_]+((\.(-\.)*-?|-(\.-)*\.?)[a-zA-Z0-9_]+)*$/

第一个正则表达式的单个 .- 被一系列交替的 .- 替换, 以 .- 开头,可选地后跟 -..- 对,可选地后跟-. 分别允许偶数个交替字符。这种复杂性可能是过度的,但似乎是当前规范所需要的。如果需要最多 2 个交替的 .-,则正则表达式变为

/^[a-zA-Z0-9_]+((\.-?|-\.?)[a-zA-Z0-9_]+)*$/

测试herehere

关于php - 用于匹配字母数字字符、下划线、句点和破折号的正则表达式,只允许在中间使用点和破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10764291/

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