从 JavaScript 到 Java 的正则表达式测试

RegEx test from JavaScript to Java

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

我正在尝试将以下算法从角度服务迁移到后端,从而从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 不敏感等效于 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);