我有一个多行文本框,只能接受IP地址(每行一个,没有分隔符)。
例如:
@Stateless
@Interceptors(SpringBeanAutowiringInterceptor.class)
public class TestManagerImpl implements TestManager {
// automatically injected with a matching Spring bean
@Autowired
private TestService testService ;
// for business method, delegate to POJO service impl.
public String myFacadeMethod(...) {
return testService.myMethod(...);
}
...
}
到目前为止,我使用以下正则表达式和RegularExpressionValidator来验证文本框,但只有在文本框的第一行输入单个IP地址时它才有效。
如果在文本框的第二行输入第二个IP,表达式验证将失败,并显示RegularExpressionValidator的错误消息。
My Current RegularExpressionValidator如下,
10.1.20.1
10.1.20.2
我不只是在这里要求一个正确的正则表达式(尽管有用),但更多的解释可以让我自己创建一个正常的正则表达式。
答案 0 :(得分:2)
似乎整个文本应该与正则表达式匹配。您的正则表达式只匹配IP作为整个单词。您需要将\b
替换为^
,并添加与换行符+ IP匹配的0+量化组。
以下是一个例子:
^ # Start of string
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
(?: # Optional - 0+ - group start
(?:\r\n|\r|\n) # linebreaks of various types
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.](25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?) # 0+ lines having only IP
)* # Optional group end
$ # End of string
请参阅the demo