限制正则​​表达式中的单词

时间:2016-05-30 12:41:47

标签: regex

如何限制此

中的字数
[A-Za-z,.'-]{2,15}

正则表达式。允许这些字符但只有3次。

这适用于3个字:

(^[A-Za-z,.'-]{2,16}\s[A-Za-z,.'-]{2,16}\s[A-Za-z,.'-]{2,16}$)

从2到16个字符长,但必须有一个较短的方式。

3 个答案:

答案 0 :(得分:3)

稍微短一些:

^([A-Za-z,.'-]{2,16}(?:\s[A-Za-z,.'-]{2,16}){2})$

或者,如果你的正则表达式支持它:

^(([A-Za-z,.'-]{2,16})(?:\s(?1)){2})$

答案 1 :(得分:2)

使用否定前瞻:

jobject context = getContext();
jclass cls = jniEnv()->GetObjectClass(context);
jmethodID method = jniEnv()->GetMethodID(cls, "getSystemService", "(Ljava/Lang/String;)Ljava/lang/Object;"); // Fails

请参阅Live Demo

^(?!(?:.*? ){3,})[a-z ,.'-]{2,15}$ 将确保您不能拥有超过2个空格

答案 2 :(得分:1)

如果您的单词用空格分隔,请尝试([A-Za-z,.'-]{2,15}\s){3}

如果字符串中只有三个单词,则为([A-Za-z,.'-]{2,15}(\s|\z)){3}

\A([A-Za-z,.'-]{2,15}(\s|\z)){3}抓住前三个字

^([A-Za-z,.'-]{2,15}(\s|\z)){3}$更严格。