我希望有一个正则表达式来创建一个检查
的Oracle SQL REGEXP_LIKE查询如果字符串以一个字母数字字符结尾
如果"身体"字符串只包含字母数字字符OR这些授权字符(书面):连字符(破折号),点,撇号,空格
如果授权字符不相邻(以避免类似"他 - '' l ..' -lo")
我从这开始:
^[a-zA-Z0-9]+(a-zA-Z0-9\-\.'|([^\-\.'])\1)*[a-zA-Z0-9]$
我使用反斜杠来假设点和连字符是元字符
答案 0 :(得分:0)
假设您的意思是“授权字符彼此不相邻”
沿着这些方向尝试一些事情
^[a-zA-Z0-9]+([a-zA-Z0-9]+[\-\.' ]?)*[a-zA-Z0-9]$
这样重复的中间部分总是有一个字母数字字符后跟零到一个特殊字符。
答案 1 :(得分:0)
我认为这就是你想要的:
^[a-zA-Z0-9]+([-.' ][a-zA-Z0-9]|[a-zA-Z0-9])*\w?$
寻找
接着是
可选地后跟
这符合您的规格。我不确定是以一个alnum 开头而以一个alnum结尾意味着必须至少有2个alnum,或者它们是否相同。如果必须至少有2个,请删除最后一个?
(使最后一个alnum可选)。
此致