IsBasicLatin和IsLatin-1Supplement作为JavaScript正则表达式

ToX*_* 82 6 javascript regex

我有一个两步有效性检查,第一个是纯JavaScript,第二个是我不维护的(我甚至不知道可能是什么语言),是:

<xs:pattern value="[\p{IsBasicLatin}\p{IsLatin-1Supplement}]{1,1000}" />
Run Code Online (Sandbox Code Playgroud)

为了获得更好的用户体验,我需要绝对确保第一步正确验证,以便第二步永远不会抛出任何其他错误.

我做了一个"标准"正则表达式检查字母,数字等,但仍有一些差异,第二个仍然发现有些无效,有时.

这是我的实际代码:

var re = /^[\wáéíóäëiöúàèììù.,;:<>_ °!?#^$€£%\(\)\[\]\=\"\'|\\\/\-\+\*\&@]+$/gm;
return re.test(value);
Run Code Online (Sandbox Code Playgroud)

有没有办法IsBasicLatin在JavaScript正则表达式中使用(及其补充)?或者我怎样才能编写与那些完全相同的正则表达式测试?

Wik*_*żew 8

第二步是支持Unicode类别类的XML Schema模式.该模式\p{IsBasicLatin}代表[\x00-\x7F]\p{IsLatin-1Supplement}代表[\x80-\xFF](参见Unicode参考).

此外,XSD模式旨在匹配整个输入(它们是"默认锚定"),所以在JS中你必须用^和包围模式$.

因此,您可以将xs:pattern正则表达式转换为JS

^[\x00-\xFF]{1,1000}$
Run Code Online (Sandbox Code Playgroud)

要么

^[\u0000-\u00FF]{1,1000}$
Run Code Online (Sandbox Code Playgroud)

请注意,限制量词在xs:pattern正则表达式中使用,允许1到1000个字符.您的第一个正则表达式允许使用+量词无限次出现.