[英]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.