首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要删除使用javascript输入的表情符号和简单图标

需要删除使用javascript输入的表情符号和简单图标
EN

Stack Overflow用户
提问于 2015-06-17 14:59:19
回答 2查看 3.5K关注 0票数 0

我正在尝试替换表情符号和其他字符,比如♥,没有任何输入键:

代码语言:javascript
复制
'keyup': function() {
    this.value = this.value.replace(/\W+/g, '');

我希望所有有口音的人物都能通过。我也想通过标点符号。只有符号和符号(如♥)应该被替换。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-17 15:11:01

您可以对正则表达式使用相反的操作:

代码语言:javascript
复制
'keyup': function() {
    this.value = this.value.replace(/[^\w.,\s]/g, '');
             Replace those that are not --^
             words, dots, comma, spaces...

然后在字符类中添加要允许的所有字符。我将字母、_.,和空格留为有效,但您可以添加您认为有效的内容。

找到以下波兰字符列表:

代码语言:javascript
复制
Ą \u0104
Ć \u0106
Ę \u0118
Ł \u0141
Ń \u0143
Ó \u00D3
Ś \u015A
Ź \u0179
Ż \u017B
ą \u0105
ć \u0107
ę \u0119
ł \u0142
ń \u0144
ó \u00F3
ś \u015B
ź \u017A
ż \u017C

因此,您也可以使用这段允许波兰字符的代码:

代码语言:javascript
复制
'keyup': function() {
    this.value = this.value.replace(/[^\w.,\s\u0104\u0106\u0118\u0141\u0143\u00D3\u015A\u0179\u017B\u0105\u0107\u0119\u0142\u0144\u00F3\u015B\u017A\u017C]/gu, '');

将unicode与javascript匹配可能不像我们想象的那么简单,所以在像这样中您可以检查更深层次的解释。

有关将unicode与regex匹配的代码示例如下:

代码语言:javascript
复制
/foo.bar/.test('foobar')
// false

/foo.bar/u.test('foobar')   // Notice the `u` (unicode flag)
// true

更新:正如https://stackoverflow.com/users/1104068/clafarge在他的评论中指出的,如果您需要unicode块作为表情符号,范围是1F600-1F64F

票数 3
EN

Stack Overflow用户

发布于 2015-06-22 14:50:54

使用XRegExp库Unicode插件,您可以在JavaScript中使用Unicode字符类。

\p{S}匹配所有符号。

代码语言:javascript
复制
var regexp = XRegExp('[\\p{S}\\p{C}]');
this.value = XRegExp.replace(this.value, regexp, '');

定义了以下字符类:

代码语言:javascript
复制
{
    L: "Letter",
    Ll: "Lowercase_Letter",
    Lu: "Uppercase_Letter",
    Lt: "Titlecase_Letter",
    Lm: "Modifier_Letter",
    Lo: "Other_Letter",
    M: "Mark",
    Mn: "Nonspacing_Mark",
    Mc: "Spacing_Mark",
    Me: "Enclosing_Mark",
    N: "Number",
    Nd: "Decimal_Number",
    Nl: "Letter_Number",
    No: "Other_Number",
    P: "Punctuation",
    Pd: "Dash_Punctuation",
    Ps: "Open_Punctuation",
    Pe: "Close_Punctuation",
    Pi: "Initial_Punctuation",
    Pf: "Final_Punctuation",
    Pc: "Connector_Punctuation",
    Po: "Other_Punctuation",
    S: "Symbol",
    Sm: "Math_Symbol",
    Sc: "Currency_Symbol",
    Sk: "Modifier_Symbol",
    So: "Other_Symbol",
    Z: "Separator",
    Zs: "Space_Separator",
    Zl: "Line_Separator",
    Zp: "Paragraph_Separator",
    C: "Other",
    Cc: "Control",
    Cf: "Format",
    Co: "Private_Use",
    Cs: "Surrogate",
    Cn: "Unassigned"
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30895309

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档