亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么我的正則表達式在客戶端上工作但在服務器上失?。?/h1>

為什么我的正則表達式在客戶端上工作但在服務器上失???

慕慕森 2023-07-20 15:47:05
我正在使用一個應該驗證用戶名的正則表達式。用戶名只能包含英文字母、數字或下劃線。客戶端代碼輸入按預期工作,不允許除字母、數字和取消劃線之外的任何內容:              <input                type="text"                name="username"                id="username"                required                minlength="2"                maxlength="14"                pattern="[A-Za-z0-9_]+"                class="form__input"              />當我嘗試提交包含 的用戶名時!,瀏覽器驗證不允許這種情況發生?,F在,在我的服務器端(Express 應用程序 + 是的)我使用相同的正則表達式,但是,它沒有按預期工作:    const shema = yup.object().shape({  username: yup    .string()    .required()    .trim()    .min(2)    .max(14)    .matches(/[A-Za-z0-9_]+/, 'Only English letters, numbers, and underscore allowed (2-14 characters)')})當我使用 Postman 并使用包含的用戶名發送發布請求時!,驗證不起作用。所有其他字段均按預期驗證,因此,我的正則表達式可能存在問題?謝謝。
查看完整描述

1 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

在 HTML 中,模式屬性隱式地跨越輸入值的整個長度- 就好像它的兩端都有不可見的^和s 。$例如:


<form>

  <button>submit will fail because more than one digit exists in the input</button>

  <input pattern="\d" value="123">

</form>

要使服務器上的模式執行與客戶端上執行的邏輯相同的邏輯,請使用:

.matches(/^[A-Za-z0-9_]+$/

或者,更好的是,使用\w,它匹配字母、數字和_字符:

.matches(/^\w+$/

您也可以在客戶端上執行此操作:

<form>

  <button>submit</button>

  <input pattern="\w+">

</form>


查看完整回答
反對 回復 2023-07-20
  • 1 回答
  • 0 關注
  • 160 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號