Javascript 从XRegExp获取匹配项

Javascript 从XRegExp获取匹配项,javascript,regex,Javascript,Regex,使用以下正则表达式匹配以大写字母开头的单词: var regex = XRegExp("/\p{Ll}*\p{Lu}+\p{Ll}*/gu"); var matches = XRegExp.exec("TestString", regex); 但是,matches变量始终为null。我不确定正则表达式是否错误,或者我是否错误地使用了xregexp。如何获取以大写字母开头的单词的匹配项?您可以使用范围设置为all/g modifier的XRegExp.ma

使用以下正则表达式匹配以大写字母开头的单词:

var regex = XRegExp("/\p{Ll}*\p{Lu}+\p{Ll}*/gu");
var matches = XRegExp.exec("TestString", regex);
但是,matches变量始终为null。我不确定正则表达式是否错误,或者我是否错误地使用了xregexp。如何获取以大写字母开头的单词的匹配项?

您可以使用范围设置为all/g modifier的XRegExp.match,或者在循环中运行XRegExp.exec:

var regex=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*; //或者:const regex=XRegExpString.raw`\p{Ll}*\p{Lu}+\p{Ll}*`; var matches=XRegExp.matchTestString,regex,all; 控制台。日志匹配; var regex1=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*,g; var结果=[],匹配; forEachTestString,regex1,函数匹配,i{ 结果:pushmatch[0]; }; 控制台。日志结果; 您可以使用范围设置为all/g modifer的XRegExp.match,或在循环中运行XRegExp.exec:

var regex=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*; //或者:const regex=XRegExpString.raw`\p{Ll}*\p{Lu}+\p{Ll}*`; var matches=XRegExp.matchTestString,regex,all; 控制台。日志匹配; var regex1=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*,g; var结果=[],匹配; forEachTestString,regex1,函数匹配,i{ 结果:pushmatch[0]; }; 控制台。日志结果;
根据中的示例,可以双转义反斜杠,标志是第二个参数

XRegExp(pattern, [flags])
pattern的值可以是{String | RegExp},所以您可以使用String像这样使用它

var regex=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*,gu; var matches=XRegExp.matchTestString,regex; 控制台。日志匹配;
根据中的示例,可以双转义反斜杠,标志是第二个参数

XRegExp(pattern, [flags])
pattern的值可以是{String | RegExp},所以您可以使用String像这样使用它

var regex=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*,gu; var matches=XRegExp.matchTestString,regex; 控制台。日志匹配;
像这样试试XRegExp'\\p{Ll}*\\p{Lu}+\\p{Ll}*','gu';Try:XRegExp\\b\\p{Lu}\\p{L}*,'gu';像这样试试XRegExp'\\p{Ll}*\\p{Lu}+\\p{Ll}*','gu';Try:XRegExp\\b\\p{Lu}\\p{L}*,'gu';谢谢@TheFourthBird你知道我如何允许在正则表达式中用数字匹配单词吗?所以基本上是一样的,除了允许单词中有数字。Thanks@doorman如果要匹配数字0-9[\p{Ll}0-9]*\p{Lu}+[\p{Ll}0-9]*或[\p{Ll}\p{N}]*\p{Lu}+[\p{Ll}\p{N}]*以匹配任何数字字符;将在任何不支持ECMAScript 2018+的环境中失败,因为正则表达式文字将触发本机JS正则表达式编译。在var regex=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*中使用u没有意义,gu;,由于XRegExp是为了解决Unicode正则表达式的问题而开发的,因此这里不需要匹配Unicode属性类。谢谢@TheFourthBird您知道如何允许在正则表达式中也使用数字匹配单词吗?所以基本上是一样的,除了允许单词中有数字。Thanks@doorman如果要匹配数字0-9[\p{Ll}0-9]*\p{Lu}+[\p{Ll}0-9]*或[\p{Ll}\p{N}]*\p{Lu}+[\p{Ll}\p{N}]*以匹配任何数字字符;将在任何不支持ECMAScript 2018+的环境中失败,因为正则表达式文字将触发本机JS正则表达式编译。在var regex=XRegExp\\p{Ll}*\\p{Lu}+\\p{Ll}*中使用u没有意义,gu;,由于XRegExp是为解决Unicode正则表达式问题而开发的,因此这里不需要匹配Unicode属性类。感谢@WiktorStribizew的回答感谢@WiktorStribizew的回答