簡體   English   中英

正則表達式 - 匹配沒有前導和尾隨空格的字符串

[英]Regex - match a string without leading and trailing spaces

構建一個拒絕未修剪的輸入字符串的表達式。

有一組列入白名單的符號,包括空格 但它不能在第一個或最后一個位置使用。 但是,它可以在任何數量的任何前導和修剪白名單之間使用。

有以下表達式:

^[^\s][A-Za-z0-9\s]*[^\s]$

...但它有多種原因無效,至少它仍然在前導位置和尾隨位置匹配任何非空白符號,即使它不是白名單。 此外,即使它與表達式匹配,也不會匹配單個字母單詞。

白名單是AZ,az,0-9,空格。

有效案例:

Abc132 3sdfas // everything ok

案例#1無效:

 asd dsadas // leading\trailing space is exist

案例#2無效:

$das dsfds // not whitelisted symbol at the leading\trailing position

那么,如果它不是前導符號或尾隨符號,如何在白名單中添加空白符號?

您可以使用lookarounds來確保兩端都沒有空格:

^(?! )[A-Za-z0-9 ]*(?<! )$

現場演示

但是如果環境不支持外觀,則以下正則表達式適用於大多數引擎:

^[A-Za-z0-9]+(?: +[A-Za-z0-9]+)*$

取決於你的正則表達式引擎支持環顧四周

^(?=[A-Za-z0-9])([A-Za-z0-9\s]*)(?<=[A-Za-z0-9])$

演示

暫無
暫無

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

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