为除JavaScript中的密码特定模式之外的所有内容编写正则表达式
write regex for everything except a particular pattern for password in javascript
我使用以下正则表达式模式来验证密码。
var expression = /^[^'!'@'#'$'%'^'&'*'(')'-'s'='+'['{']'}';':'''"'<'>'?'/','.'`'~''][^'s]+$/
而且它工作正常。
现在我需要以这样一种方式更改它,以便我可以在此之上提供额外的字符以允许或阻止。
我尝试了以下代码,但它不起作用。
var blockchar = "t";
var allowchar = "b";
var expression = '^' + blockchar + '[^'!'@'#'$'%'^'&'*'(')'-'s'='+'['{']'}';':'''"'<'>'?'/','.'`'~''' + allowchar + '][^'s]+$'
var regexp = new RegExp(expression);
var elmval = document.getElementById("txt1").value;
if (!elmval.match(regexp)) {
return "validation failed";
}
谁能指导我如何将两个变量(blockchar
和allowchar
)合并到其中?应阻止 blockchar
中的值,并允许 allowchar
中的值。
您可以通过不同的方式允许或禁止字符串中的字符。让我们看 3 个基本示例:
-
示例 1:在字符类中指定允许的字符
/^[a-zA-Z0-9@]+$/
在这里,只允许字母,数字和arobase,开头和结尾的锚点确保整个字符串必须与模式匹配。
-
示例 2:在字符类中提供不需要的字符(使用否定字符类
[^.....]
)/^[^&#='")(]+$/
允许使用除&
#
=
'
"
以外的所有字符
-
示例 3:检查字符串是否包含不需要的字符
/[&#='")(]/
如果匹配结果为 false,并且字符串长度不为 null(或所需的大小),则字符串有效。
如何允许新字符:
对于示例 1,很容易,您可以将其放入字符类中:
var charclass = 'a-zA-Z0-9@';
var allowchars = '{}';
var regexp = new RegExp('^[' + charclass + allowchars + ']+$');
对于示例 2,这更加困难,因为从类中删除字符并不容易。一种方法是使用交替:
var charclass = '[^&#=''")(]';
var allowchars = '&#';
var regexp = new RegExp('^(?:' + charclass + '|[' + allowchars + '])+$');
对于示例 3,与示例 2 相同的问题,您需要从类中删除字符。您可以在课程之前使用负面的前瞻:
var charclass = '[^&#=''")(]';
var allowchars = '&#';
var regexp = new RegExp('^(?![' + allowchars + '])' + charclass );
如何禁止字符:
示例 1:您没有触摸原始类,但添加了负面的前瞻(后面不跟):
var charclass = '[a-zA-Z0-9@]+';
var blockchars = 'Yz8';
var regexp = new RegExp('^(?!.*[' + blockchars + '])' + charclass + '$');
字符Y
z
8
始终位于字符类中,但如果字符串中存在这些字符,则负前瞻会使模式失败。
示例 2:
您可以使用相同的先行技巧,也可以将禁止字符添加到(否定的)字符类中:
var charclass = '^&#=''")(';
var blockchars = 'Yz8';
var regexp = new RegExp('^[' + charclass + blockchars + ']+$');
示例 3:您也可以直接在类末尾添加字符。
通过这些示例,您可以轻松构建代码以动态允许字符和禁止其他字符:
示例 1:
var charclass = 'a-zA-Z0-9@';
var allowchars = '{}';
var blockchars = 'Yz8';
var regexp = new RegExp('^(?!.*[' + blockchars + '])[' + charclass + allowchars + ']+$');
示例 2:
var charclass = '^&#=''")(';
var allowchars = '&#';
var blockchars = 'Yz8';
var regexp = new RegExp('^(?:[' + charclass + blockchars + ']|[' + allowchars + '])+$');
例3:
var charclass = '^&#=''")(';
var allowchars = '&#';
var blockchars = 'Yz8';
var regexp = new RegExp('^(?![' + allowchars + '])[' + charclass + blockchars + ']');
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 将po-box javascript正则表达式转换为c#regex
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 使用正则表达式捕获“”并分割成阵列
- 将这些正则表达式从javascript转换为Java
- 用于验证JS中逻辑运算符表达式的正则表达式