我需要对现有的正则表达式进行修改,以在字符串值的开头支持特殊字符。
我目前有这个表达:
/^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d][A-Za-z\d!@#$%^&*()_+.]{7,63}$/
它接受介于8-64个字符之间的任何字符串,该字符具有至少1个数字,字母和以下特殊符号:!@#$%^&*()_ +。
如何在输入值的开头识别特殊字符?
要匹配的字符串:
.abc@1234
*abc@1234
abc@1234.
[email protected]
谢谢
您需要删除[A-Za-z\d]
并替换{7,63}
为{8,64}
。
使用
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+])[A-Za-z\d!@#$%^&*()_+.]{8,64}$
观看演示
也许,您还希望将其添加.
到前瞻中,因此它也是必需的:
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+.])[A-Za-z\d!@#$%^&*()_+.]{8,64}$
^
为确保特殊符号不会立即出现,请添加(?!.*[!@#$%^&*()_+.]{2})
负数前瞻:
^(?=.*[a-zA-Z])(?=.*\d)(?=.*[!@#$%^&*()_+.])(?!.*[!@#$%^&*()_+.]{2})[A-Za-z\d!@#$%^&*()_+.]{8,64}$
^^^^^^^^^^^^^^^^^^^^^^^^
看这个演示
请注意,这里的很多人都会对使用这么长的正则表达式的可维护性问题大喊大叫。您可以将条件拆分为单独的代码,也可以使用带注释的多行正则表达式:
var rx = RegExp("^" + // Start of string
"(?=.*[a-zA-Z])" + // Require a letter
"(?=.*\\d)" + // Require a digit
"(?=.*[!@#$%^&*()_+])" + // Require a special symbol
"(?!.*[!@#$%^&*()_+.]{2})" + // Disallow consecutive special symbols
"[A-Za-z\\d!@#$%^&*()_+.]{8,64}" + // 8 to 64 symbols from the set
"$");
var re = RegExp("^" + // Start of string
"(?=.*[a-zA-Z])" + // Require a letter
"(?=.*\\d)" + // Require a digit
"(?=.*[!@#$%^&*()_+])" + // Require a special symbol
"(?!.*[!@#$%^&*()_+.]{2})" + // Disallow consecutive special symbols
"[A-Za-z\\d!@#$%^&*()_+.]{8,64}" + // 8 to 64 symbols from the set
"$", "gm");
var str = '.abc@1234\n*abc@1234\nabc@1234.\[email protected]\n*abc@1234\nabc@1234.\[email protected]\na@b.#c123\na@__c1234';
while ((m = re.exec(str)) !== null) {
document.body.innerHTML += m[0] + "<br/>";
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句