Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I am aware that regEx are common across languages...But I am having trouble in writing the Java syntax. I have a regular expression coded in JS as;

if((/[a-zA-Z]/).test(str) && (/[0-9]|[x21-x2F|x3A-x40|x5B-x60|x7B-x7E]/).test(str))         
return true;

How do I write the same in Java ?

I have imported

import java.util.regex.Matcher;
import java.util.regex.Pattern;

Just to add, from what I am trying it is saying x is an invalid escape character..

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
598 views
Welcome To Ask or Share your Answers For Others

1 Answer

Change the leading and trailing '/' characters to '"', and then replace each '' with "\".

Unlike, JavaScript, Perl and other scripting languages, Java doesn't have a special syntax for regexes. Instead, they are (typically) expressed using Java string literals. But '' is the escape character in a Java string literal, so each '' in the original regex has to be escaped with a 2nd ''. (And if you have a literal backslash character in the regex, you end up with "\\" in the Java string literal!!)

This is a bit confusing / daunting for Java novices, but it is totally logical. Just remember that you are using a Java string literal to express the regex.


However as @antak notes, there are various differences between the regex languages implemented by Java and JavaScript. So if you take an arbitrary JavaScript regex and transliterate it to Java (as above) it might not work.

Here are some references that summarize the differences.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...