Java 如何使用glob验证我的REFERER URL?

Java 如何使用glob验证我的REFERER URL?,java,regex,referrer,Java,Regex,Referrer,我正在尝试检查我的推荐人字符串是否来自格式为{{anything}}的任何URL: String referrer = req.getHeader("REFERER"); if (!(referrer.equals("https://www.google.com")) + createRegexFromGlob("*")) { System.out.println("The referrer is valid."); } else { S

我正在尝试检查我的推荐人字符串是否来自格式为{{anything}}的任何URL:

    String referrer = req.getHeader("REFERER");

    if (!(referrer.equals("https://www.google.com")) + createRegexFromGlob("*")) {
        System.out.println("The referrer is valid.");
    } else {
        System.out.println("The referrer is not valid.");
    }
这是地球仪:

public static String createRegexFromGlob(String glob)
{
    String out = "^";
    for(int i = 0; i < glob.length(); ++i)
    {
        final char c = glob.charAt(i);
        switch(c)
        {
        case '*': out += ".*"; break;
        case '?': out += '.'; break;
        case '.': out += "\\."; break;
        case '\\': out += "\\\\"; break;
        default: out += c;
        }
    }
    out += '$';
    return out;
}
公共静态字符串createRegexFromGlob(字符串glob)
{
String out=“^”;
对于(int i=0;i
推荐人的URL必须是直接命中的还是会自动知道它是否来自基本URL


我想我可以只使用
.contains
,而不是确保字符串等于某个值加上正则表达式?这有什么问题吗?

为什么不改用
.startsWith

试一试

另外,你到底在用
createRegexFromGlob
做什么?只需将URL与以下正则表达式匹配

^https:\/\/www\.google\.com.*$  
Java代码:

String pattern = "^https:\\/\\/www\\.google\\.com.*$";
if(referrer.matches(pattern))
可以使用
.contains
,但它也可以接受URL,如

http://example.com/https://www.google.com  

为什么不改用
.startsWith

试一试

另外,你到底在用
createRegexFromGlob
做什么?只需将URL与以下正则表达式匹配

^https:\/\/www\.google\.com.*$  
Java代码:

String pattern = "^https:\\/\\/www\\.google\\.com.*$";
if(referrer.matches(pattern))
可以使用
.contains
,但它也可以接受URL,如

http://example.com/https://www.google.com  

正则表达式在字符串中被理解了吗?对不起,没有理解你的意思。你试过用
startsWith
吗?是的。startsWith有效。我想知道我是否可以问url字符串是否等于您提供的正则表达式。如果您的意思是希望使用正则表达式进行检查,我已经在我的答案中添加了它。效果很好。谢谢正则表达式在字符串中被理解了吗?对不起,没有理解你的意思。你试过用
startsWith
吗?是的。startsWith有效。我想知道我是否可以问url字符串是否等于您提供的正则表达式。如果您的意思是希望使用正则表达式进行检查,我已经在我的答案中添加了它。效果很好。谢谢