1

jQuery で名前フィールド フィルターを作成しようとしていますが、非常に多くの正規表現を試しましたが、完全に機能するものはありません。

名前フィールドを名前フィールドとして作成するだけで十分です。たとえば、Adam Jeremy Smith などです。したがって、$ または / または _ または ~ または 0-9 などを入力する可能性はありませんか? これを行う方法?

私はそれがあるべきだと思った:

/[^\\p{L}]+([^0-9])+$/

ええ、たとえば「Adam Je4」と入力した場合にのみ機能しますが、続けて「Adam Je4remy」と入力すると機能せず、間違って検証されますか?

それを達成する方法は?

4

3 に答える 3

4

name を と定義するとsomething that consists of 1 or more words, separated by spaces, where each word consists of one or more letters, and starts with uppercase、次のように記述されます...

/^[A-Z][a-z]+(\s+[A-Z][a-z]+)*$/

しかし、実際にはもっと複雑です。文字だけではありません(\p{L}あなたの例では、プロパティユニコードクラスはJSでサポートされていません。そのような機能を実装するには、プラグイン(たとえばthis oneなど)を使用する必要があります)。

たとえば、名前にアポストロフィを使用できますか? もしそうなら、それらはどのように使用できますか (おそらく、このように 2 つのアポストロフィが近い名前はありません - I''van Ivanov? ハイフンについてはどうですか? さまざまな大文字化規則についてはどうですか:たとえば、 brian d foyを本当の名前と見なしますか? など...

ポイントは、実際に期待するものと正規表現の複雑さのバランスを取る必要があるということです。

于 2012-07-17T22:29:55.737 に答える
2

このように名前の形式を厳密に制限することは、あらゆる種類のケース (名前にアポストロフィとダッシュが含まれている人、追加の文字を使用するヨーロッパ/アジア諸国の人など) を考慮に入れることができないため、悪い習慣です。

詳細については、この記事を参照してください: http://www.kalzumeus.com/2010/06/17/falsehoods-programmers-believe-about-names/

于 2012-07-17T22:30:10.500 に答える
0

答えは: /^[Az\s]+$/

于 2012-07-17T22:26:26.557 に答える