繁体   English   中英

从 JavaScript 到 Java 的 RegEx 测试

[英]RegEx test from JavaScript to Java

我正在尝试将以下算法从角度服务迁移到后端,从而从 JavaScript 迁移到 Java。

你能帮我在 Java 中获得与在 js 中相同的结果吗?

var UA                  = navigator.userAgent,
    isIOS               = /ip(hone|od|ad)/i.test(UA),
    isSafari            = /(mac os x).*version\/\d(.\d)+ (mobile\/\w{5,} )?safari/i.test(UA),
    isSafari5           = /(mac os x).*version\/5[.\d]+ (mobile\/\w{5} )?safari/i.test(UA),
    isAndroid           = /android/i.test(UA),
    isAndroidBrowser    = isAndroid && !/chrome|firefox/i.test(UA),
    isAndroidBrowserOld = isAndroidBrowser && parseFloat(/android ([\d\.]+)/i.exec(UA).pop()) < 4.3,
    isAndroid2          = isAndroidBrowser && /android 2\.\d/i.test(UA),
    isAndroidChrome     = isAndroid && /chrome/i.test(UA),
    isKindleFire        = /KF[A-Z]{2,3}/.test(UA),
    isFirefox           = /firefox/i.test(UA),
    isIE11              = /Trident/i.test(UA),
    isIE                = /msie \d/i.test(UA) || isIE11,
    isMSTouch           = (navigator.maxTouchPoints > 0) || (navigator.msMaxTouchPoints > 0),
    isMSTouchPrefix     = !!navigator.msMaxTouchPoints,
    isPhone             = ((/mobile/i.test(UA) && !/ipad|tablet/i.test(UA)) || matchMedia('only screen and (max-device-width : 767px)').matches) && !isKindleFire,
    isTablet            = (isAndroid && !isPhone) || (isIOS && !isPhone) || isKindleFire,
    isMobile            = isPhone || isTablet;

    this.isPhone = isPhone;
    this.isTablet = isTablet;

在此先感谢您的帮助

一般来说

  • 可以使用 java.util.regex.Pattern 使用正则表达式,Java 没有像 JavaScript 那样的语言级别支持
  • 移除正则表达式周围的 //,这是 JavaScript 正则表达式集成的一部分
  • 任何 \\ 都需要在 Java 字符串中转义为 \\\\
  • /i insensitive 等价于 Pattern.compile(regex, Pattern.CASE_INSENSITIVE)
  • 核心正则表达式在 99% 的情况下应该相同

例子

String UA = "iphone";

boolean isIOS = 
        Pattern.compile("ip(hone|od|ad)", Pattern.CASE_INSENSITIVE).matcher(UA).matches();
boolean isSafari5 = 
        Pattern.compile("(mac os x).*version\\/\\d(.\\d)+ (mobile\\/\\w{5,} )?safari", Pattern.CASE_INSENSITIVE).matcher(UA).matches();

System.out.println(isIOS);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM