SpringBoot中正则表达式困惑:ID匹配正则写法疑问
正则表达式匹配问题解答
你的两个写法都不符合要求,具体问题如下:
- 第一个表达式
[A-Za-z0-9/s]:
这只是单个字符的匹配集合,只能匹配一个字母、数字,或者错误的/s字符(你应该是想写\s表示空格,但就算修正,也只能匹配单个空格),完全无法匹配由多个字符组成的单词,更满足不了“单词间用单个空格分隔”的规则。 - 第二个表达式
[A-Za-z0-9 ]//{1}:
存在语法错误,//{1}不是正则的合法写法,而且整体依然只能匹配单个字符,同样无法实现需求。
符合要求的正则写法
如果要匹配整个ID字符串完全符合规则(即开头结尾无空格,单词由字母数字组成,单词间仅单个空格),正确的正则是:
^[A-Za-z0-9]+( [A-Za-z0-9]+)*$
各部分解释:
^:锚定字符串开头,确保ID不会以空格开头[A-Za-z0-9]+:匹配至少1个字母或数字组成的单词(保证ID至少包含一个单词)( [A-Za-z0-9]+)*:匹配零个或多个「单个空格+字母数字单词」的组合,确保单词间只有单个空格,且不会出现连续空格$:锚定字符串结尾,确保ID不会以空格结尾
如果只是要在文本中提取符合规则的ID片段,可以去掉开头和结尾的锚点^和$,但验证ID合法性时,建议保留锚点以确保整体符合规则。
内容的提问来源于stack exchange,提问作者JustAnAvgSoftwareEngineer
相关产品推荐
相关产品推荐

