我正在尝试写一个正则表达式来否定123-45-6789和123456789(确切的9位数字但它可以是0-9之间的任何组合)格式并允许其他所有字母字符,除了精确的9位数之外的任何数字,特殊字符但没有前导和尾随空格。
这是我的正则表达式,
^(!~(\d{3}-?\d{2}-?\d{4})&([0-9]{?!9}))|([a-zA-Z].\S)$
这符合我的大部分条件,除了字母数字组合,更小/更大的9位数字。
任何建议都会有所帮助。
答案 0 :(得分:3)
您可以使用此正则表达式:
^(?!\d{3}-?\d{2}-?\d{4}$|\s|.*\s$).*$
请参阅Regex101上的演示。
这使用\s
来排除以空格开头或结尾的文本。如果你真的只想在那里排除空格,但是会接受制表符,不间断空格,换行符......然后用普通空格\s
替换。
当特定位置有0,1或2个连字符时,上述内容不接受9位数字。如果必须接受带有1个连字符的情况,请执行以下操作:
^(?!\d{3}-\d{2}-\d{4}$|\d{9}$|\s|.*\s$).*$