我正在尝试创建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)
无效。
如何指定字符类中项目的数量?
答案 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+单词字符\)
- 文字)