Pao*_*ino 57
您可以使用以下replace方法:
'Hey! The #123 sure is fun!'.replace(/[^A-Za-z]+/g, '');
>>> "HeyThesureisfun"
Run Code Online (Sandbox Code Playgroud)
如果你想保留空格:
'Hey! The #123 sure is fun!'.replace(/[^A-Za-z\s]+/g, '');
>>> "Hey The sure is fun"
Run Code Online (Sandbox Code Playgroud)
正则表达式/[^a-z\s]/gi基本上是指匹配任何不是字母az或空格(\ s)的东西,同时全局(g标志)并忽略字符串(i标志)的情况.
小智 11
使用RegEx实例属性g,i
global:是否针对字符串中的所有可能匹配测试正则表达式,还是仅针对第一个匹配.
ignoreCase:在字符串中尝试匹配时是否忽略大小写.
使用RegEx特殊字符[a-z],+
[^ xyz]:一个否定或补充的字符集.也就是说,它匹配括号中未包含的任何内容.您可以使用连字符指定一系列字符.
例如,
[abcd]与...相同[a-d].它们匹配"胸部"中的"b"和"印章"中的"c".+:匹配前面的项目1次或更多次.相当于{1,}.
JavaScript 字符串替换方法语法
str.replace(regexp | substr,newSubStr | function [,Non-standard flags]);
非标准标志g和i可替换语法来通过或内置于正则表达式.例子:
var re = /[^a-z]+/gi; var str = "this is a string"; var newstr = str.replace(re, ""); print(newstr);
var str = "this is a string"; var newstr = str.replace(/[^a-z]+/, "", "gi"); print(newstr);
Run Code Online (Sandbox Code Playgroud)
为了匹配空格字符,还会将\ s添加到正则表达式中[^a-z\s]+.
在正则表达式的ECMAScript实现是恕我直言最好的解释Mozilla开发者网络(以前,Mozilla开发者中心)的在RegExp文章中的JavaScript语言参考页.
但是,如前所述,之前的答案并未考虑非英语字母,例如变音符号和重音字母.为了不从字符串中删除这些字母,您必须将它们从字符范围中排除,如下所示:
var s = "Victor 1 jagt 2 zwölf 3 Boxkämpfer 4 quer 5 über 6 den 7 Sylter 8 Deich";
s = s.replace(/[^a-zäöüß]+/gi, "");
Run Code Online (Sandbox Code Playgroud)
这种方法很快变得乏味且难以维护,特别是如果需要考虑几种自然语言(即使在正确的英语中也有诸如" 似曾相识 "和" 未婚夫 "之类的外来词).
因此,在其他PCRE功能中,JSX:regexp.js 允许您通过Unicode字符数据库(UCD)使用可以使用Unicode属性类的正则表达式.
然后你会写¹
var s = "Victor 1 jagt 2 zwölf 3 Boxkämpfer 4 quer 5 über 6 den 7 Sylter 8 Deich";
var rxNotLetter = new jsx.regexp.RegExp("\\P{Ll}+", "gi");
s = s.replace(rxNotLetter, "");
Run Code Online (Sandbox Code Playgroud)
要么
var s = "El 1 veloz 2 murciélago 3 hindú 4 comía 5 feliz 6 cardillo 7 y 8 kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja"
+ " – ????? 1 ?? 2 ??? 3 ???? 4 ?????? 5 ??????????? 6 ?????, ?? 7 ????? 8 ???.";
var rxNotLetterOrWhitespace = new jsx.regexp.RegExp("[^\\p{Ll}\\p{Lu}\\s]+", "g");
s = s.replace(rxNotLetterOrWhitespace, "");
Run Code Online (Sandbox Code Playgroud)
减少对实现的大写/小写怪癖的依赖(并且更具可扩展性),对于RegExp排除所有非字母Unicode字符(以及第二个示例中的空格).
一定要提供Unicode字符数据库的一个版本,因为它很大,不断变化,因此没有内置到regexp.js中(JSX包含一个详细的文本和UCD的压缩脚本版本;两者都可以使用,并且后者是首选,regexp.js).请注意,符合ECMAScript的实现不需要支持基本多语言平面(U + 0000到U + FFFF)之外的字符,因此jsx.regexp.RegExp即使它们位于UCD中,目前也不支持这些字符.有关详细信息,请参阅源代码中的文档.