【发布时间】:2016-11-07 18:20:13
【问题描述】:
我正在尝试验证一个字符串字段以检查某些字符并在其中任何一个存在时引发错误。这是我正在使用的正则表达式:
var regex = /^[^'\\\/\:\*\?"<>\|-]*$/; // In ServiceNow
ServiceNow平台的JavaScript代码如下:
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var regex = /^[^'\\\/\:\*\?"<>\|-]*$/;
var ans = g_form.getValue('u_native_renaming_suffix');
if(!regex.test(ans)){
alert('Please enter valid string');
return;
}
}
它适用于所有包含的字符。但是,当使用拉长的连字符 (–) 或弯曲的单引号或双引号 (“、”、‘、’)(我们在 MS Word 等应用程序中找到)时,而不是正常的连字符或引号,此验证不起作用。也就是说,当使用正常的连字符或引号时,它会引发错误,但在使用拉长的连字符或弯曲引号时不会。
我什至尝试将新字符复制粘贴到正则表达式中,但它们只是被替换或视为普通字符,即:
/^[^'’\\\/\:*\?"”<>\|-–]*$/
变成
/^[^''\\\/\:*\?""<>\|-–]*$/
当我点击保存时。
如何将这 3 个字符的验证也纳入其中?
【问题讨论】:
-
请显示您尝试复制粘贴字符的建议解决方案的代码。
-
是的,请提供代码,因为没有使用正则表达式的上下文,很难给出具体答案
-
我敢打赌,这将是 Including a hyphen in a regex character bracket? 的副本。
-
这是一个用于ServiceNow平台的javascript代码。函数 onChange(control, oldValue, newValue, isLoading, isTemplate) { if (isLoading || newValue === '') { return; } var regex = /^[^'\\\/\:*\?"\|-]*$/; var ans = g_form.getValue('u_native_renaming_suffix'); if(!regex.test(ans) ){ alert('请输入有效字符串'); return; } }
-
顺便说一句,您不需要所有这些转义:
var regex = /^[^'\/:*?"<>|-]*$/;
标签: regex validation unicode