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),不匹配中文、日文等非拉丁字符。