 <p>One simple way to check is to do 2 tests on the input string for the existence of each type of character:</p> <pre><code>/[0-9]/.test(inputString) &amp;&amp; /[special_characters]/.test(inputString) </code></pre> <p>The code will do as you described: check if there is at least 1 digit, and at least 1 special character in the <code>inputString</code>. There is no limit on the rest of the <code>inputString</code>, though.</p> <p>Fill in <code>special_characters</code> with your list of special characters. In your case, it would be:</p> <pre><code>/[0-9]/.test(inputString) &amp;&amp; /[!@#$%^&amp;*(){}[\]&lt;&gt;?/|.:;_-]/.test(inputString) </code></pre> <p>I removed a few redundant escapes in your pattern for special character. (<code>^</code> doesn't need escaping, and <code>-</code> is already there at the end).</p> <p>This make the code readable and less maintenance headache, compared to trying to write a single regex that do the same work.</p>