如何为所有语言创建字母数字正则表达式?

发布于 2024-11-19 18:50:08 字数 106 浏览 4 评论 0 原文

我今天遇到了这个问题:

这个正则表达式仅匹配英语:[a-zA-Z0-9]

如果我需要对这个世界上任何语言的支持,我应该编写什么正则表达式?

I had this problem today:

This regex matches only English: [a-zA-Z0-9].

If I need support for any language in this world, what regex should I write?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

醉梦枕江山 2024-11-26 18:50:08

字母/字母:\p{L}

数字:\p{N}

因此,对于所有语言的字母匹配,您可以使用:[\p{L }\p{N}]+

我一直在寻找一种方法,用 JS 中的空格替换所有语言的所有非字母字符,最终使用以下方法来实现:

const regexForNonAlphaNum = new RegExp(/[^\p{L}\p{N}]+/ug);
someText.replace(regexForNonAlphaNum, " ");

这里是 JS,我们需要在末尾添加 u 以使正则表达式 unicode 感知, g 代表全局,因为我想要匹配所有实例而不仅仅是单个实例。

参考文献:

https://www.linkedin.com/pulse/regex-one-pattern-rule-them-all-find-bring-darkness-bind-carranza/?trackingId=U6tRte%2BzTAG6O4AA3CrFmA%3D%3D

https://www.regular-expressions.info/unicode.html

Alphabet/Letter: \p{L}

Number: \p{N}

So for alphnum match for all languages, you can use: [\p{L}\p{N}]+

I was looking for a way to replace all non-alphanum chars for all languages with a space in JS and ended up using the following way to do it:

const regexForNonAlphaNum = new RegExp(/[^\p{L}\p{N}]+/ug);
someText.replace(regexForNonAlphaNum, " ");

Here as it is JS, we need to add u at end to make the regex unicode aware and g stands for global as I wanted match all instances and not just a single instance.

References:

https://www.linkedin.com/pulse/regex-one-pattern-rule-them-all-find-bring-darkness-bind-carranza/?trackingId=U6tRte%2BzTAG6O4AA3CrFmA%3D%3D

https://www.regular-expressions.info/unicode.html

灯角 2024-11-26 18:50:08

如果您使用字符类简写和 Unicode 识别正则表达式引擎,您就可以做到这一点。 \w 类匹配“单词字符”(字母、数字和下划线)。

请注意某些正则表达式风格不能很好地做到这一点:JavaScript 使用 ASCII 表示 \d (数字)和 \w,但使用 Unicode 表示 \s< /代码>(空格)。 XML 则相反。

If you use character class shorthands and a Unicode aware regex engine you can do that. The \w class matches "word characters" (letters, digits, and underscores).

Beware of some regex flavors that don't do this so well: JavaScript uses ASCII for \d (digits) and \w, but Unicode for \s (whitespace). XML does it the other way around.

Hello爱情风 2024-11-26 18:50:08

支持大多数语言的正则表达式

^[A-zÀ-Ÿ\d-]*$

Regex supporting most languages

^[A-zÀ-Ÿ\d-]*$

故事↓在人 2024-11-26 18:50:08

下面的正则表达式是唯一对我有用的正则表达式:

"\\p{LD}+" ==> LD means any letter or digit. 

如果您想清除文本中的任何非字母数字字符,您可以使用以下命令:

text.replaceAll("\\P{LD}+", "");//Note P is capital. 

The regex below is the only one worked for me:

"\\p{LD}+" ==> LD means any letter or digit. 

If you want to clean your text from any non alphanumeric characters you can use the following:

text.replaceAll("\\P{LD}+", "");//Note P is capital. 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文