我有一个两步有效性检查,第一个是纯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正则表达式中使用(及其补充)?或者我怎样才能编写与那些完全相同的正则表达式测试?
第二步是支持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个字符.您的第一个正则表达式允许使用+量词无限次出现.
| 归档时间: |
|
| 查看次数: |
5296 次 |
| 最近记录: |