RegularExpressionValidator Regex在多行文本框中验证IP(每行一个)?

时间:2016-04-29 09:14:49

标签: c# asp.net regex textbox multiline

我有一个多行文本框,只能接受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

我不只是在这里要求一个正确的正则表达式(尽管有用),但更多的解释可以让我自己创建一个正常的正则表达式。

1 个答案:

答案 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