Skip to content

Instantly share code, notes, and snippets.

@bluedeck
Created January 29, 2018 19:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save bluedeck/25041fa477f210c4d86ebcf30d105854 to your computer and use it in GitHub Desktop.
Save bluedeck/25041fa477f210c4d86ebcf30d105854 to your computer and use it in GitHub Desktop.
名称允许字串
const raw_name_allow = /^[ -~¡-¬®-ʸぁ-ヿ㐀-䶵가-힣、-〼,!?;:( )[]【】—一-鿏]+$/;
const raw_name_regulate = str => str.replace(/[\s\n\r\t]/g, " ").replace(/[*=@#%&?|\\{}\[\]:]/g, "");
@bluedeck
Copy link
Author

bluedeck commented Jan 29, 2018

名称允许字串

N.B.:“名称”可以是用户名称、页面名称、消息名称和工单名称。为了方便起见,使用同一套规则。

允许范围(执行顺序:首先执行)

范围:拉丁字母、希腊字母、西里尔字母、一般半角符号、数学符号、CJK通用表意符号(汉字、假名、谚文、一些全形标点)

N.B.:拉丁字母可以是普通的、带扬抑分长音符的、或者用于法文德文瑞典文挪威文书面挪威文芬兰文荷兰文西班牙文及葡萄牙文的。

Rationale:暂定,可以添加或调整,以避免难以辨认的标点、空白字符和控制字符为目标,以容易访问和搜索为目标。

执行条例:任何不在该域内的用户名字符会被替换为空字串。

不允许存在在任何部位的字符(执行顺序:稍后执行)

禁止列表 1:*、=、@、#、%、&、?、|、\、/。

原因:

  1. *(半角星号):有特殊作用,用于按照id访问特殊页面。
  2. =(半角等号):无特殊作用,但是URL不安全。
  3. @(半角邮箱标识符):有特殊作用,用于标示电邮名称,故不能做标识符。
  4. #(半角井字):无特殊作用,但是URL不安全。
  5. %(半角百分号):无特殊作用,但是URL不安全。
  6. &(半角ampersand):无特殊作用,但是URL不安全。
  7. ?(半角问号):无特殊作用,但是URL不安全。
  8. \(半角反斜杠):无特殊作用,但是容易混淆。
  9. /(半角斜槓):有特殊作用,這是路徑分割符號。

执行条例:上述字符使用空字符替代。

禁止列表 2:\s、\n、\r、\t。

原因:不便显示的字符。

执行条例:上述字符会被替换成 \u0020(英文半角空格)。

N.B.:替换后的字串仍有可能和下述规则冲突而拒绝注册。比如,首尾空白字符、连续空白字符。

其他规则(执行顺序:最后执行)

  1. 禁止全部采用数字[0-9]。原因:和 id 及电话号码混淆。
  2. 禁止全部采用空白字符。举例:" \n "。原因:不容易辨识。
  3. 禁止首尾空白字符。举例:" 刘小雨"。原因:不容易辨识。
  4. 禁止连续空白字符。举例:"王 小雨"。原因:不容易辨识。

执行条例:不合格用户名拒绝注册。不合格頁面名拒絕創建,等等。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment