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..
解决方案
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 regex languages in Java and Javascript. So if you take a Javascript regex and transliterate it to Java as above, it might not work.
Here are some references that summarize the differences.