【问题标题】:Regex exception for one letter does not fire. JS一个字母的正则表达式异常不会触发。 JS
【发布时间】:2021-04-19 19:08:14
【问题描述】:

我在输入下方以红线的形式进行了简单的 JS 验证。它只是显示错误在哪里,主要验证发生在服务器上。 所以,我排除了所有允许的符号。我还在例外中添加了一种语言,它具有英语字母表中的大部分字母,但少数除外。除了ə,所有这些字母都通过了验证。有趣的是,只有小写字母的例外不适用于它。在顶部,一切正常。

这封信的代码:u04D9

这是函数本身:

str.replace(/[^\u0400-\u04FF\u00C7\u018F\u011E\u0049\u0130\u00D6\u015E\u00DC\u00E7\u04D9\u011F\u0131\u0069\u00F6\u015F\u00FC\w@.?()+"/,:;*%!№$#=-]+/gu, '');

有什么建议可以解决这个问题吗?

【问题讨论】:

  • 你的正则表达式matchesə。请注意,您不需要 u 修饰符,请将其删除。
  • 那可能是什么问题呢?我从fileformat.info/info/unicode/char/04d9/index.htm取了编码,应该是正确的。
  • 首先,尝试不使用u。接下来,有很多类似的字符,如ə。尝试将\u018F\u01DD\u0259\u04D8\u04D9\u1D4A\u2094 添加到字符列表中。

标签: javascript regex unicode


【解决方案1】:

\u04D9 是一个CYRILLIC SMALL LETTER SCHWA。您识别的字符是LATIN SMALL LETTER SCHWA,代码为\u0259。您需要将其添加到正则表达式中才能“捕获”它。

但是,quite a few characters 看起来类似于 ə 等字符:

Ə ‎018F LATIN CAPITAL LETTER SCHWA
ǝ ‎01DD LATIN SMALL LETTER TURNED E
ə ‎0259 LATIN SMALL LETTER SCHWA
Ә ‎04D8 CYRILLIC CAPITAL LETTER SCHWA
ә ‎04D9 CYRILLIC SMALL LETTER SCHWA
ᵊ ‎1D4A MODIFIER LETTER SMALL SCHWA
ₔ ‎2094 LATIN SUBSCRIPT SMALL LETTER SCHWA

\u018F\u01DD\u0259\u04D8\u04D9\u1D4A\u2094 添加到字符列表中似乎是合理的。

【讨论】:

    猜你喜欢
    • 2023-03-30
    • 1970-01-01
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多