用于验证url、布尔值和字符串的Java正则表达式

用于验证url、布尔值和字符串的Java正则表达式,java,regex,validation,Java,Regex,Validation,我正在制定一个正则表达式,用于验证包含以下格式项的文本区域 an url, boolean(true or false), string(with or without spaces) 一个例子如下: http://www.yahoo.com, true, web mail site http://www.google.com, false, a search site 所以我试图为每一行制定一个正则表达式,如下所示 (^(http|https|ftp)\://[a-zA-Z0-9\-\.]

我正在制定一个正则表达式,用于验证包含以下格式项的文本区域

an url, boolean(true or false), string(with or without spaces)
一个例子如下:

http://www.yahoo.com, true, web mail site
http://www.google.com, false, a search site
所以我试图为每一行制定一个正则表达式,如下所示

(^(http|https|ftp)\://[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,3}(:[a-zA-Z0-9]*)?/?([a-zA-Z0-9\-\._\?\,\'/\\\+&%\$#\=~])*$)(,(true|false))(,(.*))

因此,我可以检查每一行,但这个正则表达式不起作用。整个正则表达式与逗号分隔字符串的类型不匹配。还有什么方法可以让这个正则表达式检查多行并验证这个模式吗?

如果换行是您唯一的问题,您可以使用以下标志:

您还可以嵌入:

我冒昧地为你的URL使用了不同的正则表达式(它来自)。这也将把所有东西都放在一个捕获组中


演示:

产出:

URL:  http://www.yahoo.com
Bool: true
Text: web mail site

URL:  http://www.google.com
Bool: false
Text: a search site

非常感谢,但当我尝试通过它进行测试时,它仍然显示“模式不匹配”:(不确定正则表达式测试程序是否工作正常…我将在实际代码中尝试此操作,并查看:)再次感谢。
Pattern.compile("(?mi)^((?:https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]), (true|false), (.*)$",);
public static void extract(String str) {

    Pattern regex = Pattern.compile("(?mi)^((?:https?|ftp|file)://[-A-Z0-9+&@#/%?=~_|$!:,.;]*[A-Z0-9+&@#/%=~_|$]), (true|false), (.*)$");

    Matcher m = regex.matcher(str);
    while (m.find()) {
        System.out.println("URL:  " + m.group(1));
        System.out.println("Bool: " + m.group(2));
        System.out.println("Text: " + m.group(3) + "\n");
    }
}

public static void main (String[] args) throws java.lang.Exception
{
    String str = "http://www.yahoo.com, true, web mail site\nhttp://www.google.com, false, a search site";
    extract(str);
}
URL:  http://www.yahoo.com
Bool: true
Text: web mail site

URL:  http://www.google.com
Bool: false
Text: a search site