如何将JavaScript正则表达式转换为Java

How to convert a JavaScript regex into Java?

本文关键字:转换 Java 正则表达式 JavaScript      更新时间:2023-09-26

我一直在使用这个正则表达式来验证使用JavaScript的YouTube链接:

function is_valid_video(url) {
        var p = /^(?:http?:'/'/)?(?:m'.)?(?:youtu'.be'/|youtube'.com'/(?:embed'/|v'/|watch'?v=|watch'?.+&v=))(('w|-){11})(?:'S+)?$/;
        return (url.match(p)) ? RegExp.$1 : false;
    }

由于我正在学习开发Android应用程序,所以我想将此函数转换为在Java中使用。

public static bool is_valid_video(String url) {
return url.matches("Your Regex Goes Here");
}

import java.util.regex.Matcher;
import java.util.regex.Pattern;    
private static final String myRegexp = "/^(?:http?:'/'/)?(?:m'.)?(?:youtu'.be'/|youtube'.com'/(?:embed'/|v'/|watch'?v=|watch'?.+&v=))(('w|-){11})(?:'S+)?$/";
private static final Pattern p = Pattern.compile(myRegexp );
public boolean isValid(String url){
    //This is what String.matches() does internally but now you have already crated the pattern instance -> more efficient
    Matcher m = p.matcher(url);
    return m.matches();
}

您可能必须在regExp String中进行一些字符转义。参见Pattern

附带说明:使用regexp来验证如此复杂的链接不是一个好主意。您将遇到维护和可持续性的问题。