簡體   English   中英

正則表達式,僅將名稱與一個空格匹配

[英]regular expression to match name with only one spaces

我在js中有一個字符串條件,我必須檢查在文本框中輸入的名稱是否僅包含一個空格。

 pattern: name.status === 'full_name' ? /^[a-zA-Z.+-.']+\s+[a-zA-Z.+-. ']+$/ : /^[a-zA-Z.+-. ']+$/

但是上面的正則表達式也匹配以2個空格結尾的名稱。

我需要對其進行匹配,以使輸入的名稱只能接受一個空格作為名稱字符串。 因此,名稱之間或末尾只有一個空格。

兩個觀察:1) \\s+中的模式匹配1個或多個空格,以及2) [+-.]匹配4個字符: +,-. ,因此最好將連字符放在字符類的末尾。

您可以使用

/^[a-zA-Z.+'-]+(?:\s[a-zA-Z.+'-]+)*\s?$/

正則表達式演示

細節

  • ^ -字符串開頭
  • [a-zA-Z.+'-]+ -1個或多個字母, . +'-
  • (?:\\s[a-zA-Z.+'-]+)* -零個或多個序列:
    • \\s單個空格
    • [a-zA-Z.+'-]+ -1個或多個字母, . +'-字符
  • \\s? -可選的空格
  • $ -字符串結尾。

注意:如果“名稱”不能包含. + ,只需從字符類中刪除這些符號即可。

/^\S+\s\S+$/

嘗試這個

一些解釋:

  • ^-字符串開頭
  • \\ s-單個空格
  • \\ S-除空格外的所有內容
  • “ +”-量詞“一個或多個”
  • $-字符串結尾

您還可以使用單詞邊界...

 function isFullName(s) { return /^\\b\\w+\\b \\b\\w+\\b$/.test(s); } ['Giuseppe', 'Mandato', 'Giuseppe Mandato'] .forEach(item => console.log(`isFullName ${item} ? ${isFullName(item)}`)) 

暫無
暫無

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

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