用于匹配空格或标点符号和非字母数字的正则表达式

Posted

技术标签:

【中文标题】用于匹配空格或标点符号和非字母数字的正则表达式【英文标题】:RegEx for matching whitespace OR punctuations AND non-alphanumerics 【发布时间】:2019-09-27 07:38:28 【问题描述】:

我有这个正则表达式:

(\s+)|([.,!?:;'\"\'-])

这与数组中的任何空格或标点符号匹配,但不是所有标点符号,我正在努力寻找与任何标点符号匹配的示例。

我考虑过匹配字符不是字母数字的位置,但这会导致重音字母和不同词典出现问题。

标点符号是否包含所有内容,例如(当我说标点符号时我希望包含符号):

`,.#@

等等

【问题讨论】:

这是一本综合指南。跟随它,您将能够自己构建它:p itnext.io/… 只在你的角色类中包含额外的角色。 见Supported Unicode General Categories和下面支持的命名块。 您可能需要先进行文本规范化。请参阅String.Normalize 方法。另见Unicode equivalence、Normalization FAQ 【参考方案1】:

你可以使用[\pP\pS]:

(\s+)|([\pP\pS])

[\pP\pS] 将匹配任何作为标点符号或符号字符的字符。

查看list of subproperties这些类参考:

标点符号 PC 标点符号,连接器包括“_”underscore Pd 标点符号,破折号 包括几个 hyphen 字符 Ps 标点符号,打开开头bracket 个字符 Pe 标点符号,关闭右括号字符 Pi 标点符号,初始报价开头quotation mark。不包括 ASCII“中性”引号。根据使用情况,可能表现得像 Ps 或 Pe Pf 标点符号,最后的引号 结束引号。根据使用情况,可能表现得像 Ps 或 Pe Po 标点符号,其他 符号 Sm 符号,数学 Mathematical symbols(例如,+、-、=、×、÷、√、∊)。不包括括号和方括号,它们属于 Ps 和 Pe 类别。也不包括 !、*、- 或 /,尽管它们经常用作数学运算符,但主要被认为是“标点符号”。 Sc 符号,货币Currency symbols Sk 符号,修饰符 So Symbol, other

【讨论】:

【参考方案2】:

如果不需要匹配下划线,您可以使用

\W

它会匹配任何不是数字、字母或下划线的字符,而不是您当前使用的字符。

【讨论】:

这不起作用,因为重音字符/不同的词典例如é 我在发送给你之​​前在正则表达式风暴中试过了,没有检测到那个字符,你想检测它吗? 我正在使用它,并且根据regexr regexstorm.net/tester?p=%5cW&i=%c3%a9.fasfsaf.-%c3%a1%c3%a4 检查链接我看不到你说什么

以上是关于用于匹配空格或标点符号和非字母数字的正则表达式的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式

7.4 Javascript:表单验证-揭开正则表达式的面纱

7.4 Javascript:表单验证-揭开正则表达式的面纱

正则表达式

正则表达式总结

php正则表达式基本