全名的正则表达式(必须是两个字或更多)

时间:2016-05-27 10:46:21

标签: c# asp.net

我试图为人的全名定义正则表达式,格式为:“Deepak Das”或“Deepak Bidyabhusan Das”。该名称必须至少包含两个单词,如上面的单词,并且不得允许单词名称如“Deepak”或“Roger”等。我已经尝试了很多,但没有一个表达似乎有效。

这些是我到目前为止所尝试的表达方式:

 JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST,
            url, params,
            new Response.Listener<JSONObject>() {

                @Override
                public void onResponse(JSONObject response) {
                    Log.d("Login Response", response.toString());


                   hidepDialog();
                }
            }, new Response.ErrorListener() {

        @Override
        public void onErrorResponse(VolleyError error) {

            System.out.println(error.getStackTrace());
            VolleyLog.d("ErrorVolley", "Error: " + error.getStackTrace());
            hidepDialog();
        }
    }) {

            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("userID", "2"));
                params.put("email","aa@a.kl");
                params.put("passwd", "ddddd");

                return params;
            }
        };

你能解释一下我可能做错了什么以及如何解决它?

4 个答案:

答案 0 :(得分:1)

好吧,我们先详细说明一下规则:

  1. 名称​​的每个部分必须从大写字母[a-z]开始。
  2. 每个 部分都可以包含小写字母\s
  3. 名称​​必须包含至少2个由 John Smith George W Bush // please, notice "W" Shi Li Hoi Kuang // four parts 分隔的部分。
  4. 示例:

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

    所以模式可以是

     Charles de Batz-Castelmore d'Artagnan 
    

    但是,请记住,真实姓名可能会有所不同,例如

    -

    注意'd'和{{1}};提供相关的规则具有挑战性的任务,更不用说正则表达式了。

答案 1 :(得分:0)

这应该适合你:

 ^([a-zA-Z]*)\s+([a-zA-Z ]*)$

它分别捕获名字和第二个名字。它本身不会匹配单个名称。以下是此正则表达式的实例:http://rubular.com/r/aux8CsJsKw

如果您想捕获多个名字和一个姓氏,请使用:

^([a-zA-Z ]*?)\s+([a-zA-Z]*)$

答案 2 :(得分:0)

^[a-zA-Z]+(\s[a-zA-Z]+)+$

使用此表达式

答案 3 :(得分:0)

这不起作用 将其留在上下文

^(\w+ ){2}

\w匹配任何字母或数字,+表示您可以根据需要将其中的任意数量相同。空间只是一个空格而{2}表示功能w+需要2次。

修改这应该有效

正如@Draken指出的那样,在第二个单词之后需要一个空格。

所以更简单的方法是:

^\w+ \w+

只是一个单词,一个空格和一个单词

<强> EDIT2

另一次更正,我没有看到它可能超过2个字。

^\w+( \w+)+

他们以大写字母开头:

^[A-Z]\w+( [A-Z]\w+)+