替换unicode之外的非数字字符

时间:2013-11-16 14:15:47

标签: javascript regex unicode

我有这个正则表达式,它取代了除字母数字,空格和破折号之外的所有内容。

str.replace(/[^\w\s-]+/g, '')

A)我怎样才能排除str中的unicode字? 我应该手动放置所有!#$%等。我想排除的符号?

B)此外,如果我想摆脱表情符号(因为我会允许其他unicode)并且只想保留其他语言的话?

2 个答案:

答案 0 :(得分:0)

如果您知道字符集范围,则可以排除这些范围。这将排除所有非数字字符

 str = str.replace(/[^0-9]+/g, '');

答案 1 :(得分:0)

最安全的方法是在A中描述您在字符集中包含您不想匹配的字符列表。

  • ^ =否定匹配
  • \w = a-zA-Z0-9的快捷方式,
  • \s =(空格),
  • !#$%- =这些特定字符

否定匹配导致字符类匹配列表中没有的任何内容,您可以不使用+来匹配要删除的单个字符:

输入str = 'this is a test )(*&^%$#@!~';

正则表达式str.replace(/[^\w\s!#$%-]/g, '');

结果this is a test %$#!

请参阅:http://regex101.com/r/nD4wL1