【问题标题】:Regex in javascript working with Cyrillic (Russian) setjavascript中的正则表达式与西里尔文(俄语)集一起使用
【发布时间】:2010-12-31 11:07:20
【问题描述】:

是否可以在 javascript 的正则表达式中使用俄语字符?
也许使用 \p{Cyrillic}?

如果是,请提供一个基本的用法示例。

例子:

var str1 = "абв прв фву";
var regexp = new RegExp("[вф]\\b", "g");

 alert(str1.replace(regexp, "X"));

我希望得到:абX прX

【问题讨论】:

    标签: javascript regex


    【解决方案1】:

    这是一篇关于JavaScript regular expressions and unicode 的好文章。 JavaScript 中的字符串是 16 位的,因此字符串和 RegExp 对象可以包含 unicode 字符,但大多数特殊字符如 '\b'、'\d'、'\w' 仅支持 ascii。因此,由于使用了“\b”,您的正则表达式无法按预期工作。看来您必须找到一种不同的方法来检测单词边界。

    【讨论】:

      【解决方案2】:

      如果您只是将 JavaScript 文件保存为 UTF8,它应该可以工作。那么你应该可以在字符串中输入任何字符。

      编辑: 刚刚用 Wikipedia 中的一些 cryllic 字符做了一个简单的例子:

      var cryllic = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюяабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
      cryllic.match( 'л.+а' )[0];
      // returns as expected: "лмнопрстуфхцчшщъыьэюяа"
      

      【讨论】:

      • 但如果我试试这个: var str1 = "абв"; var regexp = new RegExp("[бв]\b", "g");警报(str1.replace(正则表达式,“е”));它不起作用。
      • 您的文件是 100% UTF-8 编码的吗?你能用一个字符试试吗?
      • 似乎单词边界\b 无法正常工作。如果我删除它,它可以正常工作,所以尝试用[ ] 或类似的东西替换它。
      • 我需要知道正确的“类似的东西”。这是一个简单的示例,我需要使用更复杂的正则表达式模式,并且需要使用这些标签。
      【解决方案3】:

      根据this

      JavaScript,它不提供任何 通过其 RegExp 支持 Unicode 类,确实支持 \uFFFF 匹配单个 Unicode 代码点 作为其字符串语法的一部分。

      因此您至少可以使用代码点,但似乎仅此而已(没有类)。

      同时查看this duplicate您的问题。

      【讨论】:

      • 该站点不正确。 JavaScript 在正则表达式中支持 Unicode。
      • 除了与上面引用的单个代码点进行比较之外,我找不到任何参考,参见例如w3schools.com/jsref/jsref_obj_regexp.asp你有消息来源吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-15
      • 2013-03-29
      相关资源
      最近更新 更多