我需要验证输入字符串,以便仅允许在字符串的开头或结尾使用字符“ E”,“ W”,“ N”,“ S”(或小写字母)字符串(不是全部)。字符后跟数字。字符不能在数字之间。另外,如果它出现在开头,那么它就不能出现在结尾(反之亦然)。
我能够提出这个正则表达式:[wWeEnNsS]{0,1}\\d+
,它仅检查开头的字符。但是,如何确定如果它出现在开头,那么它不能出现在结尾?
以下是有效输入的示例:
w234,
W234,
E234,
234w,
234
无效输入:
w234w,
2w34,
ww234,
we234,
w234e,
w
答案 0 :(得分:3)
您可以使用不区分大小写的模式匹配进行交替:
^[ewns][0-9]+$|^\d+[ewns]?$
在Java中
String regex = "^(?:[ewns]?[0-9]+|\\d+[ewns])$";
^[ewns][0-9]+$
字符串的开始,匹配列出的字符中的1和字符串的结尾|
或^\d+[ewns]?$
字符串的开头,可以选择匹配列出的字符1和字符串的结尾