可选第一个特殊字符的正则表达式

标签 regex pattern-matching

是否可以为可选的第一个字符创建正则表达式?

我的要求是创建一个正则表达式

  • 接受字母和数字
  • 长度在 6 到 100 个字符之间
  • 仅包含特殊字符冒号作为第一个字符

  • 冒号:是可选字符

我已经制作了^([:][a-zA-Z0-9]{6,100}$)

如何将第一个字符 : 设为可选?目前这是强制性的。

提前致谢!

最佳答案

是的,使用匹配 1 次或 0 次出现的 ? 量词:

^:?[a-zA-Z0-9]{6,100}$
  ^

但是,如果 : 应计入字符计数,则使用

^(?=.{6,100}$):?[a-zA-Z0-9]+$

详细信息:

  • ^ - 线 anchor 的开头
  • (?=.{6,100}$) - 正向预测,整个字符串需要 6 到 100 个字符(不多也不少)
  • :? - 可选的 :
  • [a-zA-Z0-9]+ - 1 个或多个字母/数字
  • $ - 字符串结尾。

关于可选第一个特殊字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42949085/

相关文章:

python - 匹配 Python 中的特定字符串,除非缺少给定模式

regex - 查找有向循环图中的所有路径作为正则表达式

ruby - 给定大量 URL,将 URL 分组为模式或正则表达式的最佳数据挖掘方法是什么?

url - 在字符串 lua 模式中查找 url

javascript - 如果该子字符串前面没有特定字符串并忽略整个字符串,则正则表达式匹配该子字符串?

php - 条件正则表达式 PHP

java - Java:正则表达式不匹配

c++ - 字符串匹配实现

sql - ORDER BY 更改了具有相同名称的列

erlang - 具有精确键列表的模式匹配映射