Skip to content

1. 开始

marked 在 uniapp 的安卓下有兼容性问题。

2. unicodeAlphaNumeric

js
/[\p{L}\p{N}]/u

意图是匹配任何字母(\p{L})或数字(\p{N}

修改后:

js
// \w 匹配字母、数字、下划线
const regex = /\w/;

// 如果只想匹配字母和数字,不要下划线,可以这样写
const regexNoUnderscore = /[A-Za-z0-9]/;

优点: 简单、高效、兼容性极佳。

缺点: 不支持匹配中文、日文等非拉丁字母。

2. _punctuation

js
/[\p{P}\p{S}]/u

这个正则表达式的含义

  • \p{P}:代表 Punctuation(标点符号)。
  • \p{S}:代表 Symbol(符号)。

修改后 (示例):

js
// 列出所有你关心的标点和符号
// 注意:在正则表达式中,一些字符需要转义,比如 - [ ] / \ ^ $ . | ? * + ( )
const regex = /[!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/;

优点:

  • 无任何依赖:不需要引入任何库。
  • 兼容性极佳:所有 JavaScript 环境都支持。

缺点:

  • 不完整:这个字符集只包含了标准的 ASCII 标点符号,不包含中文标点(如 , 。 ? !)和特殊符号(如 © ® €)。
  • 繁琐:需要手动维护这个字符列表

3. _punctuationOrSpace

js
/[\s\p{P}\p{S}]/

这个个表达式是三个部分的组合,意图是匹配这三类字符中的任意一个:

  • \s:匹配任何 空白字符,包括空格、制表符 (\t)、换行符 (\n) 等。这个部分是兼容的。
  • \p{P}:匹配任何 标点符号 (Punctuation)。这个部分是不兼容的。
  • \p{S}:匹配任何 符号 (Symbol)。这个部分是不兼容的。

修改后 (示例):

js
// \s 保留,然后手动添加所有你关心的标点和符号
const regex = /[\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/;

4. _notPunctuationOrSpace

js
/[^\s\p{P}\p{S}]/u

意图是匹配 一个不是空白字符、不是标点符号、也不是符号的字符

修改后:

js
// 使用 \w 来匹配字母、数字和下划线
const regex = /\w/;

优点:

  • 极其简单:代码量最少。
  • 兼容性极佳:所有 JavaScript 环境都支持。

缺点:

  • 包含下划线 _:\w 会匹配下划线,而原始的 /[^\s\p{P}\p{S}]/ 不会。
  • 不支持 Unicode:\w 只匹配标准的拉丁字母(A-Z, a-z),不匹配中文、日文等非拉丁字符。

5. _punctuationGfmStrongEm

js
 /(?!~)[\p{P}\p{S}]/u

意图是匹配一个 空白字符、标点符号 或 符号。

修改后 (示例):

js
// \s 保留,然后手动添加所有你关心的标点和符号
const regex = /[\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/;

优点:

  • 无任何依赖:不需要引入任何库。
  • 兼容性极佳:所有 JavaScript 环境都支持。

缺点:

  • 不完整:这个字符集不包含中文标点(如 , 。 ? !)和特殊符号(如 © ® €)。
  • 繁琐:需要手动维护这个字符列表。

6. _punctuationOrSpaceGfmStrongEm

js
/(?!~)[\s\p{P}\p{S}]/u

这个表达式比之前的更复杂一些,它包含了一个 负向前瞻(Negative Lookahead) (?!~)

  • (?!~):这是一个断言,它的意思是 "接下来的字符不能是 ~"。它本身不消耗字符,只是一个条件判断。
  • [\s\p{P}\p{S}]:这部分和你之前的问题一样,意图是匹配一个 空白字符、标点符号 或 符号。

所以,/(?!~)[\s\p{P}\p{S}]/ 的完整意图是:匹配一个 空白字符、标点符号或符号,并且 这个字符 不是 波浪号 ~。

修改后 (示例):

js
// 保留 (?!~) 和 \s,然后手动添加所有你关心的标点和符号
const regex = /(?!~)[\s!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~]/;

优点:

  • 无任何依赖:不需要引入任何库。
  • 兼容性极佳:所有 JavaScript 环境都支持。

缺点:

  • 不完整:这个字符集不包含中文标点(如 , 。 ? !)和特殊符号(如 © ® €)。
  • 繁琐:需要手动维护这个字符列表。

7. _punctuationOrSpaceGfmStrongEm

js
/(?:[^\s\p{P}\p{S}]|~)/u

匹配一个 字母 / 数字 或者 匹配一个 波浪号 ~

修改后 (示例):

js
// 使用 \w 匹配字母、数字和下划线,再加上 ~
const regex = /[\w~]/;

优点:

  • 极其简洁:代码量最少。
  • 兼容性极佳:所有 JavaScript 环境都支持。

缺点:

  • 包含下划线 _:\w 会匹配下划线,而原始的 [^\s\p{P}\p{S}] 不会。
  • 不支持 Unicode:\w 只匹配标准的拉丁字母(A-Z, a-z),不匹配中文、日文等非拉丁字符。