使用正则表达式验证字符串是以指定字符开头还是结尾

时间:2019-06-19 07:04:14

标签: java regex validation

我需要验证输入字符串,以便仅允许在字符串的开头或结尾使用字符“ E”,“ W”,“ N”,“ S”(或小写字母)字符串(不是全部)。字符后跟数字。字符不能在数字之间。另外,如果它出现在开头,那么它就不能出现在结尾(反之亦然)。

我能够提出这个正则表达式:[wWeEnNsS]{0,1}\\d+,它仅检查开头的字符。但是,如何确定如果它出现在开头,那么它不能出现在结尾?

以下是有效输入的示例:

w234,
W234,
E234,
234w,
234

无效输入:

w234w,
2w34,
ww234,
we234,
w234e,
w

1 个答案:

答案 0 :(得分:3)

您可以使用不区分大小写的模式匹配进行交替:

^[ewns][0-9]+$|^\d+[ewns]?$

在Java中

String regex = "^(?:[ewns]?[0-9]+|\\d+[ewns])$";
  • ^[ewns][0-9]+$字符串的开始,匹配列出的字符中的1和字符串的结尾
  • |
  • ^\d+[ewns]?$字符串的开头,可以选择匹配列出的字符1和字符串的结尾

Regex demo | Java demo