1

入力が最大 25 文字で、スペース文字で区切られた 2 つの文字列 (名と姓) を含むかどうかを確認する正規表現が必要です。これまでのところ、私はこれを持っています、

var name=$('#name').val();
var namePattern = /^[\sA-Za-z]{25}$/;

if(namePattern.test(name))
{
return true;
}
4

2 に答える 2

5

正規表現を使用する理由

if (name.length < 26 && name.indexOf(' ') > 1) {
    // the name's 25 characters or less
    // there's at least one character before the space
}

これは明らかに JavaScript の実装ですが、質問に の両方が添付されているためです。

「Bruce」が検証に合格する問題については、変数に$.trim()割り当てる文字列とその変数に対して関数を使用すると、その誤検知を防ぐことができます。次の HTML があるとします。namesplit()

<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';
});

JS フィドルのデモ

于 2013-07-19T20:53:59.997 に答える
0

説明

この式は次のようになります。

  • 文字列の長さが最大 ​​25 文字であることを検証します
  • 先頭または末尾の空白をスキップする
  • 途中に 1 つの空白文字が必要
  • 姓名を 2 つの個別のキャプチャ グループにキャプチャする
  • 名前にハイフンを付けることを許可'します。もちろん、有効な名前と見なすものは、実際にはあなた次第です。[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
于 2013-07-19T23:15:31.810 に答える