2016-04-22 41 views
-2

我想從角度服務遷移到後端,從JavaScript到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; 

感謝所有幫助

+1

使用一些在線工具的99%是相同..如果你瞭解正則表達式,在翻譯它時你不會有任何問題 – rock321987

+3

我想你知道該怎麼做,你只是懶得自己做。 – Kainix

回答

0

一般

  • 的正則表達式可以使用java.util.regex.Pattern中的使用,Java有他們像JavaScript
  • 沒有語言級的支持
  • 刪除//正則表達式,這是JavaScript正則表達式集成的一部分
  • 任何\將需要在Java字符串中作爲\\轉義
  • /I不敏感相當於Pattern.compile(正則表達式,Pattern.CASE_INSENSITIVE)
  • 核心的正則表達式應該在箱子

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);