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