【发布时间】:2014-01-29 06:19:25
【问题描述】:
原问题
我似乎很难看到明显的东西。我正在尝试在 JavaScript 中使用 POSIX character classes。 JavaScript 支持它们,aren't they?
如果我在控制台中输入,我会得到以下结果。
var s = "test string-banane. Aber bitte mit Sahne! 12 Stück, um genau zu sein. 12 Stück Sahne.";
console.log( s.replace(/[:alnum:]/g, "_") );
"test stri_g-b____e. Aber bitte _it S_h_e! 12 Stück, __ ge___ z_ sei_. 12 Stück S_h_e."
它从字面上看方括号!
将此与以下变体进行比较,这正是我想要实现的(除了该方法无法涵盖德语变音符号和其他内容):
console.log( s.replace(/[0-9a-zA-Z]/g, "_") );
"____ ______-______. ____ _____ ___ _____! __ __ü__, __ _____ __ ____. __ __ü__ _____."
使用双括号 [[:alnum:]] 似乎也无济于事。这根本不能取代任何东西!
如果您能帮助我,我将不胜感激 - 或将我指向已解决的重复线程。 (不过,我确实使用了搜索……)
编辑
使用this online tool 查找所需的Unicode 范围,我设法找出了我需要什么。这包括德国元音变音、法国口音,可能还有更多……我希望这就足够了。
var s = "test string-banane. Aber bitte mit Sahne! 12 Stück, um genau zu sein. 12 Stück ~Sahne. Voilá, alors dans l'ecole. Avec Louis de Funès. Hoëcker, Sie sind raus! Ceçille.";
s.replace( /[0-9a-zA-Z\u0080-\u00FF]/g, "_" );
"____ ______-______. ____ _____ ___ _____! __ _____, __ _____ __ ____. __ _____ ~_____. _____, _____ ____ _'_____. ____ _____ __ _____. _______, ___ ____ ____! _______."
谢谢!
【问题讨论】:
-
不支持。
-
您可以将所需的所有字符放入正则表达式中。看看这是否有帮助stackoverflow.com/questions/5343144/…
-
显然,Javascript 不实现/支持 POSIX 字符类。关于这个问题有一个非常全面的答案:stackoverflow.com/questions/280712/javascript-unicode
-
@elclanrs,就是这样。我不知道期待什么角色。而且我不知道会发生什么不,所以我可以排除它们。
-
@rla4,谢谢,链接比第一眼看起来更有用。
标签: javascript regex