Java Regex:只允许某些字符,但是不允许某些字符开始字符串?

man*_*eak 1 java regex string

我正在摆弄Java正则表达式,我试图提出一种模式,允许在任何其他地方使用某些字符集,但它不能以允许集中的某些字符开头.

例如,假设允许的字符是从A到Z,但字符串不能以X或Z开头.我该怎么做?我想出来了^[XZ][^A-Z]+,虽然它起作用,但它允许字符串以不在集合中的其他字母开头(例如用标点符号).

anu*_*ava 5

你可以使用这个正则表达式:

^[A-WY][A-Z]*$
Run Code Online (Sandbox Code Playgroud)
  • ^[A-WY]确保第一个字符是A-WY
  • [A-Z]*$ 将匹配任何大写英文字母的0或更多

通常,为了排除某些字符,您也可以使用否定预测:

^(?![XZ])[A-Z]+$
Run Code Online (Sandbox Code Playgroud)

(?![XZ])否定XZ开始时是消极的先行.