regexp在字符类中指定计数器

时间:2016-11-17 07:30:47

标签: java regex

我正在尝试创建regexp来查找重复的逗号,例如:

passport.use('local-signup',new LocalStrategy({
    usernameField: 'email', 
    passwordField: 'password',
    passReqToCallback : true},
    function(req, username, email, password, mobile, generatedOtp, done) {
        console.log("second");
        User.findOne({ email : email}, function(err, user) {
            if (err)
                return done(err);

            if (user) {
                return done(null, false, {message: 'That email is already taken.'});
            } else {
                var secret = "mysecretkey";
                var code = otp.generate(secret);
                console.log(code);
                var newUser = new User();
                newUser.name    = username;
                newUser.email    = email;
                newUser.password = password;
                newUser.mobile = mobile;
                generatedOtp: code;


                newUser.save(function(err, res) {
                    if(err) {
                            console.log(err);

                    } else {
                        console.log("right");
                    }        
                });
            }           
        });       
    }
));



router.post('/pages/auth/register', passport.authenticate('local-signup', {
    successRedirect : '/pages/auth/login', 
    failureRedirect : '/pages/auth/register', 
    failureFlash : true 
}));

现在我的模式是:baz(uint32,,bool)

无效。

如何指定字符类中项目的数量?

1 个答案:

答案 0 :(得分:2)

您无法在字符类中指定出现次数,因为此构造用于定义特定字符类型。在[...]内,*+?{1,2}被视为文字符号。

如果您需要在括号内匹配几个以逗号分隔的单词,请使用

\w*\(\w*(?:,\w*)*\)

或强制性的第一个词:

\w+\(\w*(?:,\w*)*\)
  ^

请参阅regex demo(或this one)。

在Java中,使用String re = "\\w+\\(\\w*(?:,\\w*)*\\)";

模式详情

  • \w* - 0+ word chars
  • \( - 一个文字(
  • \w* - 0+ word chars
  • (?:,\w*)* - 零个或多个序列(?:...)(...)定义序列或替代序列(如果在组内使用|)一个逗号和0+单词字符
  • \) - 文字)