簡體   English   中英

用於匹配字符串開頭和結尾可能有空格且中間有連字符的字符串的正則表達式

[英]Regex for matching a string with possible spaces at beginning and end of string with a hyphen in the middle

我正在嘗試將正則表達式的 js 風格放在一起以匹配以下示例中的字符串,其中字符串的前面或后面可能有空格,或者前面和后面都有。 但不在字符串內

例子:

'Z5LW-KRT2'       MATCH
' Z5LW-krt2'      MATCH
'Z5LW-KRT2 '      MATCH
' Z5LW-KRT2 '     MATCH

' Z5LW-K RT2 '    NO MATCH

到目前為止,如果任何地方都沒有空格,我已經想出了下面的匹配項,但我無法弄清楚如何在開頭或結尾包含空格,但不像示例中那樣包含空格

^[A-Za-z0-9\-]+$

您應該添加\s*來匹配空格,這樣結果正則表達式應該看起來像^\s*[A-Za-z0-9\-]+\s*$甚至您可以將它減少到^\s*[\w\-]+\s*$如果你想使用內置的 class \w

^\s*\S+\s*$^\s*[A-Za-z0-9\-]+\s*$將滿足您的需要:

^ : 字符串的開頭
\s* : 可選空格
\S+ :至少 1 個非空白
[A-Za-z0-9\-] :匹配文字字符類
\s* : 可選空格
$ : 字符串結尾

 let tests = [ 'Z5LW-KRT2' // MATCH, ' Z5LW-krt2' // MATCH, 'Z5LW-KRT2 ' // MATCH, ' Z5LW-KRT2 ' // MATCH, ' Z5LW-K RT2 ' // NO MATCH ] let regex1 = /^\s*\S+\s*$/ let regex2 = /^\s*[A-Za-z0-9\-]+\s*$/ for (test of tests) { console.log(`[${test}] regex1: ${test.match(regex1)?'MATCH':'NO MATCH'}, regex2: ${test.match(regex2)?'MATCH':'NO MATCH'}`) }

暫無
暫無

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

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