我该如何修改这个正则表达式以从字符串中删除除字母和 "(单引号)" 外的所有内容?
pattern = /\b(ma?c)?([a-z]+)/ig;
- 这个模式去掉不必要的空格,将第一个字母大写,其余字母转换为小写。
- 通过字母,我指的是英文中的a-z这些字母。
pattern = /\b(ma?c)?([a-z]+)/ig;
要删除字符,你需要使用实际执行此操作的某些函数,例如字符串 replace
函数(可以将正则表达式作为“from”参数接受)。
然后,您就可以处理普通应用程序中的字符类别,在 JavaScript(以及大多数其他正则表达式变体)中,它使用 [...]
来描述,其中 ...
是应该在类别中的内容。您可以在开头使用 ^
来翻转类别的含义:
在您的情况下,可能是这样的:
str = str.replace(/[^A-Za-z']/g, "");
...这将替换除英文字母 A-Z(ABCDEFGHIJKLMNOPQRSTUVWXYZ)、a-z(abcdefghijklmnopqrstuvwxyz)和单引号之外的任何内容,使其为空(例如,删除它)。
let str = "This is a test with the numbers 123 and a '.";
console.log("before:", str);
str = str.replace(/[^A-Za-z']/g, "");
console.log("after: ", str);
str = str.replace(/[^\p{Alpha}']/gu, "");
\p{Alpha}
意味着“字母”,但因为它在否定字符类中,我们排除了字母字符。)u
标志,以启用较新的 Unicode 功能。这也处理了 “voilà” 和 “naïve” 示例:
let str = "This is a test with the numbers 123 and a ' and voilà and naïve.";
console.log("before:", str);
str = str.replace(/[^\p{Alpha}']/gu, "");
console.log("after: ", str);
/ [^A-Za-z'] /g
吗? - Brigand
\b(ma?c)?
如何与你的需求相关? - pimvdb