首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非字母和非数字的正则表达式

问非字母和非数字的正则表达式
EN

Stack Overflow用户
提问于 2009-11-18 17:33:11
回答 3查看 21.6K关注 0票数 8

请提供一个用C#.NET编写正则表达式的解决方案,如下所示:我需要非字母表(a到z;A到Z)和非数字(0到9)的RegEx。意思是以相反的方式获取非字母和非数字(0到9)的正则表达式。

对于同样的问题,敬请提出解决方案。

EN

回答 3

Stack Overflow用户

发布于 2009-11-18 17:34:49

您可以在此处使用:

代码语言:javascript
复制
[^a-zA-Z0-9]

上面的正则表达式将匹配单个字符,该字符不能是拉丁小写或大写字母或数字。

character类开头的^ ( [和]之间的部分)否定整个类,以便它匹配类之外的任何内容,而不是正常的character类行为。

要使其有用,您可能需要其中之一:

  1. 零个或更多这样的字符

^a-zA-Z0-9*

这里的星号(*)表示前面的部分可以重复零次或多次。

  • 一个或多个这样的字符

^a-zA-Z0-9+

这里的加号(+)表示前面的部分可以重复一次或多次。

  • 仅由这些字符组成的完整(可能为空)字符串

^^a-zA-Z0-9*$

在这里,字符^和$的含义为,分别与字符串的开头和结尾匹配。这可确保整个字符串由不在该字符类中的字符组成,并且在这些字符之前或之后没有其他字符。

  • 仅由此类字符组成的完整(非空)字符串

^^a-zA-Z0-9+$

详细地说,这不会(也不能)确保您不会使用任何其他字符,可能来自其他脚本。字符串аеΒ对于上面的正则表达式是完全有效的,因为它使用希腊语和西里尔语字母。此外,还有其他陷阱。字符串á将在正则表达式上传递,而字符串́a不会(因为它由字母a和组合变音符号构成字母a)。

因此,有时必须小心处理否定的字符类。

我也可以使用其他脚本中的数字,如果我想的话:١٢٣ :-)

您可以使用character类

代码语言:javascript
复制
[^\p{L&}\p{Nd}]

如果你需要处理上面的事情。

票数 26
EN

Stack Overflow用户

发布于 2009-11-18 17:34:52

只需否定这个类:

[^A-Za-z0-9]

票数 4
EN

Stack Overflow用户

发布于 2009-11-18 17:41:14

要遵守本地设置,请使用:

代码语言:javascript
复制
[^[:alnum:]]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1754758

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档