2

私はAndroidでこのコードを使用してパスワードを検証しています。しかし、BBでこの式を使用したいと思います。しかし、それは機能しておらず、例外を与えています

これはAndroidコードです

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

public static boolean isUserPassValid(String userPass) {

        boolean isValid = false;
        try {
            String expression = "^.*(?=.{5,30})(?=.*\\d)(?=.*[a-zA-z]).*";
            CharSequence inputStr = userPass;

            Pattern pattern = Pattern.compile(expression,
                    Pattern.CASE_INSENSITIVE);
            Matcher matcher = pattern.matcher(inputStr);
            if (matcher.matches()) {
                isValid = true;
            }
        } catch (Exception e) {
            Log.e(TAG, "isUserPassValid Message = " + e.toString());
            e.printStackTrace();
        }
        return isValid;
    }

これは私が今Javaで検証しようとしているBBコードです

import com.sun.org.apache.regexp.internal.RE;


public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        isValidPassword("Arsla");

    }

    public static boolean isValidPassword(String text) {
        System.out.println(" password for varefication is : " + text);
        boolean isValid = false;
        String expression = "^.*(?=.{5,30})(?=.*\\d)(?=.*[a-zA-z]).*$";
        String username = text;
        RE regx = new RE(expression);
        try {
            isValid = regx.match(username);
            System.out.println("password msps to the re " + isValid);

        } catch (Exception e) {

        }
        return isValid;
    }

}

これが例外です

Exception in thread "main" com.sun.org.apache.regexp.internal.RESyntaxException: Syntax error: Missing operand to closure
    at com.sun.org.apache.regexp.internal.RECompiler.syntaxError(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.terminal(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.closure(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.branch(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.expr(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.terminal(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.closure(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.branch(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.expr(Unknown Source)
    at com.sun.org.apache.regexp.internal.RECompiler.compile(Unknown Source)
    at com.sun.org.apache.regexp.internal.RE.<init>(Unknown Source)
    at com.sun.org.apache.regexp.internal.RE.<init>(Unknown Source)
    at Test.isValidPassword(Test.java:19)
    at Test.main(Test.java:10)
4

1 に答える 1

4

たぶん、BB正規表現の実装はルックアラウンドをサポートしていません。

アンドロイドとブラックベリーの両方で簡単なルックアラウンドの例を実行してみて、それが機能するかどうかを確認してください。例えば

String expression = "A(?=B)"; // only matches B if it follows an A
于 2012-07-21T16:25:34.023 に答える