I am using the following regex in conjunction with abide Foundation for validating a password:
<form id="setPassword" action="{{ url('changePasswordWithoutToken') }}" method="POST" class="account setPassword" data-abide="ajax" novalidate="novalidate">
{{ csrfToken() }}
<input type="hidden" name="token" value="{{ data.token }}"/>
<div class="row">
<div class="large-12 columns"><p>{{ 'PLEASECHOOSEAPASSWORD'|trans }}</p></div>
<div class="large-12 columns">
<label class="password" for="setPasswordField">
<input type="password" id="setPasswordField" name="setPasswordField" pattern="passwordAdditional" required placeholder="{{ 'ACCOUNTLOGINLABELPASSWORD'|trans }}" />
<small class="error">{{ 'PASSWORDSHOULDCONTAIN'|trans }}</small>
</label>
</div>
</div>
<div class="row">
<div class="large-12 columns">
<label class="confirmPassword" for="confirmSetPassword">
<input type="password" id="confirmSetPassword" name="confirmSetPassword" data-equalto="setPasswordField" required placeholder="{{ 'CONFIRMPASSWORD'|trans }}" />
<small class="error">{{ 'ACCOUNTREGISTRATIONERRORDIFFERENTPASSWORDS'|trans }}</small>
</label>
</div>
</div>
<div class="row">
<div class="small-12 medium-5 large-4 columns">
<button type="submit" class="button" id="setPasswordBtn">{{ 'SAVECHANGES'|trans }}</button>
</div>
</div>
JS:
patterns: { passwordAdditional: /^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[_\W\S]).{8,}/ }
It deosn't seem to pick up the symbol, when I enter a new password without a symbol the validation message disappears. It shouldn't as I haven't inserted any symbol inside the new password. Is my regex wrong?
[_\W\S]matches literally everything - i guess you are looking for something like[^A-Za-z0-9\s]^(?=[a-zA-Z\d_\W\S]).{8,}$?