非字母数字分隔符的正则表达式(不是 \W)



我可能完全错过了一些东西,但这是我所拥有的:

  1. -- 需要防止无意中泄露电话号码。
  2. -- 所有数字均采用 NNN-NNNN 格式
  3. -- 可以分隔,也可以不分隔(例如,制表符、逗号、空格等)
  4. -
  5. 不要阻止具有相似(但不相同)形式的期刊文章或研究编号 - 例如 xxxnnn-nnnnxxx(是的,有点与"分隔"相矛盾,但"x" 仅字母数字)

所以,我有

(A|s|W)d{3}-d{4}(Z|s|W)

哪个有效!几乎是我想要的方式。 几乎。 但是,W^a-zA-Z0-9_的,_是潜在的分隔符。 已经尝试用^a-zA-Z0-9替换W但没有成功(实际上更糟),但可能指定不正确? FWIW,这将由.NET引擎进行评估。

试试这个

(A|s|[^a-zA-Z0-9])d{3}-d{4}(Z|s|[^a-zA-Z0-9])

使用负后看(?<!...)和负前瞻(?!...)

(?<![^W_])[0-9]{3}-[0-9]{4}(?![^W_])

最新更新