javascript - 正则表达式不会按预期匹配单词

标签 javascript regex xregexp

我正在尝试使用XRegExp根据以下标准测试字符串是否为有效单词:

  • 字符串以一个或多个 Unicode 字母开头,后跟
  • 撇号 (') 后跟一个或多个 Unicode 字母,重复 0 次或多次。
  • 字符串在匹配的模式之后立即结束。

也就是说,它将匹配这些术语

Hello can't Alah'u'u'v'oo O'reilly

但不是这些

eatin' 'sup 'til

我正在尝试这种模式,

^(\\p{L})+('(\\p{L})+)*$

但它不会匹配任何包含撇号的单词。我做错了什么?

编辑:使用正则表达式的代码

var separateWords = function(text) {
    var word = XRegExp("(\\p{L})+('(\\p{L})+)*$");
    var splits = [];
    for (var i = 0; i < text.length; i++) {
        var item = text[i];
        while (i + 1 < text.length && word.test(item + text[i + 1])) {
            item += text[i + 1];
            i++;
        }
        splits.push(item);
    }
    return splits;
};

最佳答案

我认为您需要省略 string start/end anchors匹配单个单词:

"(\\p{L})+('(\\p{L})+)*"

此外,我不确定这些捕获组的用途(这可能取决于您的应用程序),但您可以将它们缩短为

"\\p{L}+('\\p{L}+)*"

关于javascript - 正则表达式不会按预期匹配单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11836493/

相关文章:

javascript - 自定义 Angular 指令属性中的 "Error: Syntax Error unexpected token"

php - JS/PHP 'listener' 触发事件

javascript - Laravel PHP - 从 DB 到 PHP 到 JS 到 HTML 的自定义 JSON 对象

Python 正则表达式 - 匹配和 Start()

regex - 带有 $> 符号的正则表达式

javascript - 如何在 Angular 中实现 XRegExp

javascript - 如何停止加载下一页

Java 正则表达式 html 解析器

javascript - 在 XRegExp 中查找哈希值 ("#") 以及注释

javascript - Chrome : Uncaught Error: can't load XRegExp twice in the same frame