正则表达式模式在开头和结尾没有特殊字符。但在字符串中很好

时间:2017-07-26 12:58:04

标签: regex

我必须为特定字符串实现以下规则。

字段应填充,最多包含52个字母数字字符。允许四个特殊字符“:”,“。”,“ - ”,“_”。开头或结尾不允许使用特殊字符。

我尝试使用模式[0-9A-Za-z:。-_]来包含字母数字和4个特殊字符,但我不确定如何确保它们不会出现在字符串的开头或结尾。例如“Hello:123Howareyou”有效但“:hello58475howareu”无效。

这种模式不能帮助[0-9A-Za-z:.- ]包含字母数字和特殊字符和(^(:.- ))字符串的开头不应该以这些开头特殊字符和((:.- _)$)字符串的结尾不应该以这些特殊字符结尾。如何处理“开头或结尾不允许使用特殊字符”。这一部分。

感谢 PASH

2 个答案:

答案 0 :(得分:0)

仅为开头和结尾添加字母数字的正则表达式:

^[0-9A-Za-z]+[0-9A-Za-z:.\-_][0-9A-Za-z]+$

或更短的版本

^[\w]+[\w:.\-_][\w]+$

答案 1 :(得分:0)

我会用:

^[a-zA-Z0-9][\w:.-]{0,50][a-zA-Z0-9]$

其中\w[a-zA-Z0-9_]

相同

这将匹配长达52个字符且长度至少为2个字符的字符串。

如果您想匹配至少一个字符:

^[a-zA-Z0-9](?:[\w:.-]{0,50][a-zA-Z0-9])?$