コード例:
https://codepen.io/Trost/pen/KXBRbY
両方のフィールドに1つの記号を入れてみてください。
私は何が間違っている得ることができません。 https://regex101.comでこれらの正規表現をテストすると、それらは同じに見えます。HTML正規表現パターン:[ d s - ] {3}は動作しますが、[ d- s] {3}は動作しません。どうして?
<form>
Works: <input type="text" name="country_code" pattern="[\d\s-]{3}" title="-23" required>
<input type="submit">
</form>
<form>
Bug: <input type="text" name="country_code" pattern="[\d-\s]{3}" title="- 3" required>
<input type="submit">
</form>
'-'は' [] '文字クラスの途中で使用されると特別な意味を持ちます。しかし、 '\ d'と' \ s'を中心に、実際にはあまり意味がないので、実装によっては失敗する可能性があります。 '[\ d \ s-]'ではクラスの最後にあります。つまり、特別な意味はありません。 –
PCREオプションをregex101.comでテストし、HTML5パターンでは 'u'オプションを付けたES6正規表現として解析するからです。 –