将另一个正则表达式添加到现有正则表达式

Add another regex to an existing one

我有以下两种模式:

https://codepen.io/anon/pen/OdZaBe

 /^(?=.*[A-Za-z])(?=.*\d)(?=.*[!#$%\-_=+<>])[A-Za-z\d!#$%\-_=+<>]/;

https://codepen.io/anon/pen/ErLOOw

/^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!#$%\-_=+<>]/

模式 1 需要一个 letter/number/special 字符,而模式 2 只需要一个数字和一个字符。

我想添加一个模式来禁用任何空白或完整的空白字符串:(?!\s*$)[\s\S]+$

我试过了

/^(?=.*[A-Za-z])(?=.\S*$)(?=.*\d)[A-Za-z\d!#$%\-_=+<>]/;
/^(?=.*[A-Za-z])(?=.(?!\s*$)[\s\S]+$)(?=.*\d)[A-Za-z\d!#$%\-_=+<>]/;

但没有达到预期效果。

ENDING 结果为

模式 1 需要至少 1 个 letter/number/special 字符并且不允许任何空格

模式 2 需要至少 1 个数字和字符并且不允许任何空格

两种模式本身都不匹配空格。参见 https://regex101.com/r/FaQhfD/1https://regex101.com/r/IWWhSp/1

但是在您的代码中,您必须使用量词在末尾重复字符 class 并断言字符串的末尾不使用锚点 $:

$scope.thing = /^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d!#$%\-_=+<>]+$/;

和:

$scope.thing = /^(?=.*[A-Za-z])(?=.*\d)(?=.*[!#$%\-_=+<>])[A-Za-z\d!#$%\-_=+<>]+$/;

要防止在末尾输入空格,您可以使用 ng-trim="false",请参阅 ngTrim:

<input type="text" ng-model="something" ng-pattern="thing" ng-trim="false" />

更新后的代码笔示例:update 1 and update 2