入力が最大 25 文字で、スペース文字で区切られた 2 つの文字列 (名と姓) を含むかどうかを確認する正規表現が必要です。これまでのところ、私はこれを持っています、
var name=$('#name').val();
var namePattern = /^[\sA-Za-z]{25}$/;
if(namePattern.test(name))
{
return true;
}
入力が最大 25 文字で、スペース文字で区切られた 2 つの文字列 (名と姓) を含むかどうかを確認する正規表現が必要です。これまでのところ、私はこれを持っています、
var name=$('#name').val();
var namePattern = /^[\sA-Za-z]{25}$/;
if(namePattern.test(name))
{
return true;
}
正規表現を使用する理由
if (name.length < 26 && name.indexOf(' ') > 1) {
// the name's 25 characters or less
// there's at least one character before the space
}
これは明らかに JavaScript の実装ですが、質問にphp と javascriptの両方が添付されているためです。
「Bruce」が検証に合格する問題については、変数に$.trim()
割り当てる文字列とその変数に対して関数を使用すると、その誤検知を防ぐことができます。次の HTML があるとします。name
split()
<ul>
<li>Bruce</li>
<li>Bruce </li>
<li>Bruce Wayne</li>
<li>Brucewayne</li>
</ul>
jQueryで質問にタグを付けたため、次のようになります。
$('li').addClass(function(){
var name = $.trim($(this).text());
return name.length < 26 && name.split(/\s+/).length > 1 ? 'pass' : 'fail';
});
この式は次のようになります。
'
します。もちろん、有効な名前と見なすものは、実際にはあなた次第です。[a-z]
アクセント付きの文字を検証しないので注意してください.
^(?=\s*\S[^\r\n]{0,23}\S\s*\Z)\s*([a-z-']+)\s([a-z-']+)\s*\Z
ライブデモ: http://www.rubular.com/r/j9jfyJrIqP
サンプルテキスト
実際の例とこのサンプル テキストでは、先頭と末尾にスペースがあることに注意してください。
Mc'David Johnson-Smith
キャプチャ グループ
[0][0] = Mc'David Johnson-Smith
[0][2] = Mc'David
[0][3] = Johnson-Smith