Fix username/mention regexes

* Allow underscore instead of hypen
* Fix domain part handling
* Add tests for remote mention
This commit is contained in:
unarist
2018-04-09 01:10:04 +09:00
parent 34281de04e
commit 3c4235067f
6 changed files with 17 additions and 7 deletions

View File

@ -76,7 +76,7 @@ export default Vue.extend({
}
const err =
!this.username.match(/^[a-zA-Z0-9\-]+$/) ? 'invalid-format' :
!this.username.match(/^[a-zA-Z0-9_]+$/) ? 'invalid-format' :
this.username.length < 3 ? 'min-range' :
this.username.length > 20 ? 'max-range' :
null;

View File

@ -65,7 +65,7 @@ export default Vue.extend({
}
const err =
!this.nid.match(/^[a-zA-Z0-9\-]+$/) ? 'invalid-format' :
!this.nid.match(/^[a-zA-Z0-9_]+$/) ? 'invalid-format' :
this.nid.length < 3 ? 'min-range' :
this.nid.length > 30 ? 'max-range' :
null;

View File

@ -24,7 +24,7 @@ export type IApp = {
};
export function isValidNameId(nameId: string): boolean {
return typeof nameId == 'string' && /^[a-zA-Z0-9\-]{3,30}$/.test(nameId);
return typeof nameId == 'string' && /^[a-zA-Z0-9_]{3,30}$/.test(nameId);
}
/**

View File

@ -89,7 +89,7 @@ export const isRemoteUser = (user: any): user is IRemoteUser =>
//#region Validators
export function validateUsername(username: string): boolean {
return typeof username == 'string' && /^[a-zA-Z0-9\-]{3,20}$/.test(username);
return typeof username == 'string' && /^[a-zA-Z0-9_]{3,20}$/.test(username);
}
export function validatePassword(password: string): boolean {

View File

@ -4,7 +4,7 @@
import parseAcct from '../../../acct/parse';
module.exports = text => {
const match = text.match(/^(?:@[a-zA-Z0-9\-]+){1,2}/);
const match = text.match(/^@[a-z0-9_]+(?:@[a-z0-9\.\-]+[a-z0-9])?/i);
if (!match) return null;
const mention = match[0];
const { username, host } = parseAcct(mention.substr(1));