我正在尝试使用XRegExp来测试字符串是否符合以下条件:
'
)后跟一个或多个Unicode字母,重复0次或更多次。也就是说,它会匹配这些术语
你好,Alah'u'u'v'oo O'reilly不能
但不是这些
吃掉'直到
我正在尝试这种模式,
^(\\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;
};
答案 0 :(得分:2)
我认为您需要省略string start/end anchors以匹配单个词:
"(\\p{L})+('(\\p{L})+)*"
此外,我不确定需要哪些捕获组(可能取决于您的应用程序),但您可以将它们缩短为
"\\p{L}+('\\p{L}+)*"
答案 1 :(得分:0)
试试这个正则表达式:
^[^'](?:[\w']*[^'])?$
首先检查以确保第一个字符不是撇号。然后它要么获得任意数量的单词字符或撇号,后跟撇号以外的任何内容,否则它什么都没有(单字母单词)。