我试图为人的全名定义正则表达式,格式为:“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;
}
};
你能解释一下我可能做错了什么以及如何解决它?
答案 0 :(得分:1)
好吧,我们先详细说明一下规则:
[a-z]
开始。\s
。 John Smith
George W Bush // please, notice "W"
Shi Li Hoi Kuang // four parts
分隔的部分。示例:
^[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+)+