如何用固定长度和许多元素编写这个正则表达式
Posted
技术标签:
【中文标题】如何用固定长度和许多元素编写这个正则表达式【英文标题】:how to write this regex with fixed length and many elements 【发布时间】:2013-03-20 12:36:30 【问题描述】:字符串以字符开头,后跟数字(字符和数字都可以为空),但总长度不超过8。
我的解决方案是
([a-zA-Z]*[0-9]*)0,8
好像总长度 8 行不通,怎么办
【问题讨论】:
为什么要标记 c# 和 java..? 【参考方案1】:要使用正则表达式检查字符串的长度,您可以使用look ahead 机制并在正则表达式的开头添加(?=^.0,8$)
。 ^
是代表数据开始的锚点,$
代表结束。
但在你的情况下,我可能会使用类似
someString.matches("^(|[a-zA-Z]\\d0,7)$")
它会接受
空字符串, 字符串开头仅包含一个字母,最多包含 7 位数字。【讨论】:
但字符可能是 2 长度 @SanqiangZhao 您能否[edit] 您的问题并提供正确和错误字符串的示例,因为string start with character following with number
对我来说含糊不清。我对正则表达式的想法很少,但想看看发布哪一个:)
@SanqiangZhao 这些字符串应该是正确的:""
,"a"
,"1"
,"1b"
,"ab"
,"a1"
,"b11"
,"b1b"
, "aa12"
, "a1b2"
?【参考方案2】:
我认为这会起作用([a-zA-Z]|[0-9])0,8
如果不试试 使用这个工具gskinner 或www.rubular.com
【讨论】:
这不要求第一个字符(如果存在)是字母。 "0" 会通过这个表达式。 ok 添加^
就像^([a-zA-Z]|[0-9])0,8
一样只传递起始词
这仍然不能解决问题,即([a-zA-Z]|[0-9])
允许任何字母或任何数字。您需要一个字母后跟任何字母/数字的 1-7 之类的东西,这使整个事情成为可选的。以上是关于如何用固定长度和许多元素编写这个正则表达式的主要内容,如果未能解决你的问题,请参考以下文章