簡體   English   中英

如果字符串包含“”(空格),如何使Joi regex()驗證失敗?

[英]How to make Joi regex() validation fail if the string contains “ ” (whitespace)?

我有一個由Joi在Node.js中驗證的車輛登記號,需要它拒絕包含空格(空格,制表符等)的任何字符串。

我嘗試了以下模式,但Joi確實通過了:

  const schema = { 
    regNo: Joi.string()
     .regex(/^.*\S*.*$/)
     .required()
     .trim()
    }

因此,如果我提交“ JOI 777”,則該字符串被視為有效。

我究竟做錯了什么? 提前致謝,

regex的這一部分-> /^.*表示匹配任何內容,因此regEx的其余部分幾乎是短路的。

所以您的RegEx有點簡單, /^\\S+$/

這就是說, .trim() ,所有內容都必須為None空格。也可以看到它檢查所有空格,您也可以取出.trim()

例如。

 const tests = [ "JOI 777", //space in the middle "JOI777", //looks good to me " JOI777", //space at start "JOI777 ", //space at end "JO\\tI77", //tab "ABC123", //another one that seems ok. "XYZ\\n111" //newline ]; tests.forEach(t => { console.log(`${!!t.match(/^\\S+$/)} "${t}"`); }); 

用於從字符串中跳過空格,只需使用:

"hello world".replace(/\s/g, "");

如果您有多個空間,請使用以下命令:

"this string has more than one space".replace(/ /g, '');

有關更多詳細信息,請參見下面的鏈接: 刪除javascript中字符串內的空格

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM