Php正则表达式
我需要一个正则表达式,它接受最多8个字符的数字、空格和连字符。示例2632-63236252Php正则表达式,php,regex,Php,Regex,我需要一个正则表达式,它接受最多8个字符的数字、空格和连字符。示例2632-63236252 谢谢给你:/^[\d-]{0,8}$/ 编辑:因为我以前很轻率,这个正则表达式现在可以完全满足您的需要:一个包含数字(\d)、空格()和连字符(-)的字符串,长度介于0到8个字符之间\s表示“空白字符”,您在问题中没有指定它,因此对/^([0-9\-]){0,8}$/的更改应该可以工作,尽管我还没有测试,所以如果我犯了一个愚蠢的错误,请原谅。尝试以下操作: /^(\d|\s|-){0,8}$/ /^(\
谢谢给你:
/^[\d-]{0,8}$/
编辑:因为我以前很轻率,这个正则表达式现在可以完全满足您的需要:一个包含数字(\d
)、空格(
)和连字符(-
)的字符串,长度介于0到8个字符之间\s
表示“空白字符”,您在问题中没有指定它,因此对
/^([0-9\-]){0,8}$/
的更改应该可以工作,尽管我还没有测试,所以如果我犯了一个愚蠢的错误,请原谅。尝试以下操作:
/^(\d|\s|-){0,8}$/
/^(\d |\s |-){0,8}$/如果必须正好是8个字符:
/^[\d\s-]{8}$/
使用此正则表达式:
~^[\d\s-]{0,8}$~
下面是一个正则表达式,它接受最多8个字符的数字、空格和连字符
这个问题可能在不知不觉中模棱两可,因此在细节上有一些自由
“空格”表示水平空格字符();至少需要1个字符(空字符串不匹配);与其他答案相反,尾随换行符将不被接受(多亏了
D
)。您尝试了什么?你想干什么?这是一个家庭作业问题吗?你自己想出了什么?所以经常紧跟着是“DIY”。所以,8个空格的字符串也是可以接受的?我真的不理解反对票。虽然不太礼貌,但对于没有正则表达式经验的人来说,这仍然是一个有效的问题。+1代表\s
,我甚至忘记了它的存在。-0代表\s
,-1代表一个完全破了的正则表达式-{,8}
不会做你认为它会做的事。由于逗号,这将匹配123,不是吗?@CanSpice它将只匹配一位数字、空格或破折号,后跟文字字符{,8}
。。。e、 g.9{,8}
@CanSpice“老实说,这真的很容易:”)这将匹配长度超过8个字符的字符串012345678901234567890
。不,我很确定它不会匹配。我只是在你发表评论后测试了一下。这实际上是一个非常简单的正则表达式模式。结尾的“{0,8}”确保其长度不超过8个字符。编辑:我明白你的意思。如果字符串是您建议的,它将只匹配第一部分。@BenjaminHarris,是的,我非常肯定它会匹配。试试看。(提示:使用^
和$
锚定您的模式)实际上,它将匹配更长的字符串,因为您不使用单词边界(\b)或行开始/结束来限制它。@CanSpice:如何?它将重复次数限制在0到8之间characters@CanSpice:哦,我没看到,好吧,这是错的。它将接受1234
@Jonathan M,除了OP接受这个答案之外,你为什么认为它是错的?OP声明:“接受最多8个字符的数字、空格和连字符”,此模式与此模式明显匹配(您的示例“1234”
)。是的。我的眼睛交叉了。请参阅本页上的其他喷口。休息日:)这是错误的,不接受1234
“最多8个字符”与“正好8个字符”不同是的,我的眼睛交叉了。我认为OP正好是8,而不是最多8。我的错。加油,孩子们。:)乔纳森,请注意,如果你删除这个答案,你会在下一次代表重新投票后(如果你参与其中的话…)拿回你刚刚在否决票中失去的代表分数。@Bart Kiers,谢谢,伙计,但这需要我将鼠标一直移动到我答案的顶部,在到达顶部后我仍然需要单击鼠标。我只是没有那么多精力。:)
/^[\d -]{1,8}$/D