laravel6.0で、パスワードを英数字8文字以上 and アルファベット1文字以上 and 数字1文字以上で、記号は有っても無くてもOKなバリデーションを実装してみた。
パスワードに記号NGって所もあるよな~。
laravel5.5で、パスワードを英数字12文字以上 and アルファベット1文字以上 and 数字1文字以上のバリデーションを実装してみた。
正規表現で、記号を1字で表す表現って無いのね~。
\d	数字: [0-9]
\w	単語構成文字:[a-zA-Z_0-9]
みたいなのがあれば良かったのだけど。
一応調べてみたら、ASCIIコード的に半角スペース(0x20)からチルダ(0x7e)までで、[0-9A-Za-z]と記号を全てカバーできる表現があった。
| 1 | [ -~] | 
記号一覧
32	0x20	SPC	空白文字
33	0x21	!	エクスクラメーション・マーク
34	0x22	”	ダブル・クオーテーション
35	0x23	#	シャープ
36	0x24	$	ドルマーク
37	0x25	%	パーセント
38	0x26	&	アンパサンド(アンドマーク)
39	0x27	‘	シングルクォーテーション
40	0x28	(	左小カッコ
41	0x29	)	右小カッコ
42	0x2a	*	アスタリスク
43	0x2b	+	正符号(プラスマーク)
44	0x2c	,	カンマ
45	0x2d	–	ハイフン(マイナス)
46	0x2e	.	ドット
47	0x2f	/	スラッシュ
58	0x3a	:	コロン
59	0x3b	;	セミコロン
60	0x3c	<	小なり(不等号)
61	0x3d	=	イコール
62	0x3e	>	大なり(不等号)
63	0x3f	?	クエッションマーク(ハテナマーク)
64	0x40	@	アットマーク
91	0x5b	[	左大カッコ
92	0x5c	\	円マーク
93	0x5d	]	右大カッコ
94	0x5e	^	ハット
95	0x5f	_	アンダバー(アンダスコア)
96	0x60	`	バック・クオート
123	0x7b	{	左中カッコ
124	0x7c	|	パイプ
125	0x7d	}	右中カッコ
126	0x7e	~	チルダ
実際のバリデーション。これで思った通りの動作になった。
| 1 | 'password'=> ['confirmed', 'required', 'string', 'regex:/\A(?=.*?[a-zA-Z])(?=.*?\d)[ -~]{8,}\z/'], | 
chromeのパスワード自動生成って、記号は含まないのね~。