/ / Teste RegEx de JavaScript para Java - javascript, java, regex

Teste RegEx de JavaScript para Java - javascript, java, regex

Estou tentando migrar o seguinte algoritmo de um serviço angular para o back-end, portanto, de JavaScript para Java.

Você pode me ajudar a obter o mesmo resultado em Java que faço em 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;

Agradecemos antecipadamente por qualquer ajuda

Respostas:

0 para resposta № 1

Em geral

  • Regexes podem ser usados ​​usando java.util.regex.Pattern, Java não tem suporte de nível de linguagem para eles como JavaScript
  • Remova o // ao redor do regex, isso faz parte da integração do regex do JavaScript
  • qualquer um precisará de escape como \ dentro de strings Java
  • / i insensível é equivalente a Pattern.compile (regex, Pattern.CASE_INSENSITIVE)
  • O regex principal deve ser o mesmo em 99% dos casos

Exemplo

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