【问题标题】:Problem with \b in cyrillic (JavaScript Regex)西里尔文中的 \b 问题(JavaScript 正则表达式)
【发布时间】:2021-08-26 23:18:15
【问题描述】:

我有这个正则表达式:(*UCP).*\bпроверка\b.*. 它在 regex101.com (https://regex101.com/r/9elF5c) 上运行良好,但在 JavaScript 中却不行。

const regex = /(*UCP).*\bпроверка\b.*/
console.log(regex.test('а проверка б'))

谁能解释一下问题是什么以及如何解决它

【问题讨论】:

  • 在 regex101.com 中,您选择了 PCRE 风格。如果你切换到 ECMAScript,它也不起作用。
  • 问题很可能是JS没有把西里尔字母当作单词字符。

标签: javascript regex unicode ucp


【解决方案1】:

使用(*UCP)PCRE 支持的修饰符。

Javascript中的错误是因为这个语法不起作用(*括号是一个特殊的字符,*是一个量词。

如果字符串的左右两边应该有空白边界:

.*(?<!\S)проверка(?!\S).*

const regex = /.*(?<!\S)проверка(?!\S).*/
console.log(regex.test('а проверка б'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-31
    • 2014-06-20
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2011-02-05
    相关资源
    最近更新 更多