我用java写了一个正则表达式。正则的规则是: 只能是数字或者字母,但不能全部为数字
public class TestRegx {
public void test(String str){
boolean boo = str.matches("((\\d)*)([a-zA-Z]+)((\\d)*)([a-zA-Z]*)");
System.out.println(boo);
}
public static void main(String[] args) {
    
  TestRegx t = new TestRegx();
  t.test("3131231");
  t.test("adfdsf");
  t.test("aaa345546aghhth");
  t.test("121fafda");
  t.test("faafa");
  t.test("ddd1231");
  t.test("12312afaf12312");
  
}
}
这个正则已经满足了我的需求,将这个正则放到struts2的validation.xml里 
<field-validator type="regex">
      <param name="expression"><![CDATA[((\\d)*)([a-zA-Z]+)((\\d)*)([a-zA-Z]*)]]></param>
      <message key="errors.namenum"/>
 </field-validator>
问题出现了,输入只能全部为字母,只要出现一个数字就不能通过.
请问这是什么原因,JS的正则和java的正则有区别,难道java和xml在解析正则表达式的时候也有区别?
我应该在validation.xml里怎么写这个正则表达式呢?