您好,
我的Java代码如下:
Pattern p = Pattern.compile("^[a-zA-Z0-9$&+,:;=\\[\\]{}?@#|\\\\'<>._^*()%!/~\"` -]*$");
String i = "f698fec0-dd89-11e8-b06b-☺";
Matcher tagmatch = p.matcher(i);
System.out.println("tagmatch is " + tagmatch.find());
如预期的那样,答案将是错误的,因为其中包含了一个“☺”字符。然而,我想显示不匹配的列号。对于这个例子来说,应该显示第25列有无效字符。
请问我该如何做到这一点?
lookingAt()
/find()
将始终返回true,因为*
匹配零长度字符串。您需要比较end()
和i.length()
来检查它是否是完全匹配。 - shmosel$
符号,则find()/lookingAt()
方法会失败,随后您将无法使用end()
方法,因为调用该方法将引发异常:java.lang.IllegalStateException: No match available
。 - anubhava