我不是正则表达式的专家而且因为在线正则表达式验证器与我的字符串不匹配而被卡住了。
我需要一个正则表达式来检查包含一个特殊字符的32个字符的字母数字字符串。
我试过这个但是没有用:
sh filesorter.sh
有什么问题?
答案 0 :(得分:2)
请注意,字符类中的范围定义为-
,而不是_
。此外,没有必要使用{1}
,默认情况下每个原子匹配一次(正则表达式中的c
仅匹配1 c
)。如果您需要匹配精确数量的字符,请使用{m}
限制量词形式,因此{32}
= {32,32}
。此外,您量化了.
,.{32,32}
,这意味着您在输入字符串中允许除换行符之外的任何32个字符,但它应以字母数字字符([a_zA_Z0_9]
)开头,并且必须包含至少1个非单词char((?=.*[\W]{1})
)。
您需要使用
^(?=.{32}$)[a-zA-Z0-9]*\W[a-zA-Z0-9]*$
请参阅regex demo。
<强>详情
^
- 字符串开头(?=.{32}$)
- 需要32个字符[a-zA-Z0-9]*
- 0+字母数字字符\W
- 非单词字符(或[\W_]
也支持_
)[a-zA-Z0-9]*
- 0+字母数字字符$
- 字符串结尾