簡體   English   中英

固定長度字符串的正則表達式,僅在末尾留有空格。 C#

[英]Regex for fix length string which allow space(s) at end only. C#

我需要正則表達式

  1. AZ,AZ,允許0-9。

  2. 固定為20個字符。

  3. 開頭或中間不允許有空格。

  4. 空間(S)在最后允許的

例:

12345678901234567890 [Match]

1234567890           [Match]

abcde12345           [Match]

 abcdefg             [Not match]

ab cdefg             [Not match]

我使用此正則表達式,效果很好,但是它確實很長且很難維護。

[a-zA-Z0-9]{20}|[a-zA-Z0-9]{19}\s{1}|[a-zA-Z0-9]{18}\s{2}
|[a-zA-Z0-9]{17}\s{3}|[a-zA-Z0-9]{16}\s{4}|[a-zA-Z0-9]{15}\s{5}
|[a-zA-Z0-9]{14}\s{6}|[a-zA-Z0-9]{13}\s{7}|[a-zA-Z0-9]{12}\s{8}
|[a-zA-Z0-9]{11}\s{9}|[a-zA-Z0-9]{10}\s{10}|[a-zA-Z0-9]{9}\s{11}
|[a-zA-Z0-9]{8}\s{12}|[a-zA-Z0-9]{7}\s{13}|[a-zA-Z0-9]{6}\s{14}
|[a-zA-Z0-9]{5}\s{15}|[a-zA-Z0-9]{4}\s{16}|[a-zA-Z0-9]{3}\s{17}
|[a-zA-Z0-9]{2}\s{18}|[a-zA-Z0-9]{1}\s{19}|\s{20}

請幫忙,謝謝。


更新

實際上,我需要檢查很長的字符串。

首先,在我問這個問題之前,我的正則表達式看起來像這樣(第一正則表達式)

^[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}[a-zA-Z0-9\s]{20}[\s\w\d]{0,32}$

我問了一個問題后,我的正則表達式看起來像這樣(第二個正則表達式)

^[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}(?=.{20})[a-zA-Z0-9]*\s*[\s]{0,32}$

假設我將此正則表達式分為3部分。

Part1:[\s\d]{25}\d{6}[0-1]{1}\d{24}[\!\@\#\$\%\^\&\*\(\)\-\\_\=\+\/\,\?\<\>\;\:\"\'\w\s\.]{30}(\s{3}|\d{3})(\s{4}|\d{4})[\s|00|10|20|40]{2}

Part2:[a-zA-Z0-9\s]{20} changed to (?=.{20})[a-zA-Z0-9]*\s*

Part3:[\s\w\d]{0,32}

第一部分工作正常。

第2部分的要求已更改,因此我將其更改為“(?=。{20} $)[a-zA-Z0-9] * \\ s *”

當我更改第2部分時,第3部分就是問題。

00202510027680           1901160000000000000000000007000Test Test 009                 069      aaaaaaaaaaaaaaaaaaaa                                

字符串以32個空格結尾。 如果我再增加1個空間,則第一個正則表達式將不匹配。 但是第二個正則表達式匹配。 正確的是不匹配的。

我如何修改part2(或part3)以滿足要求。 謝謝。

第一個正則表達式演示

演示第二正則表達式

您可以使用

^(?=.{20}$)[a-zA-Z0-9]*\s*$

正則表達式演示

在此表達式中,使用正前瞻(?=.{20}$)強制執行20個字符的長度。 由於匹配模式僅匹配AZ,az和0-9,因此. 在前瞻中是可能的。

正則表達式說明

  • ^ -字符串的開頭
  • (?=.{20}$) -字符串長度必須為20個字符
  • [a-zA-Z0-9]* -零個或多個字母或數字(可以使用a +代替*
  • \\s* -零個或多個空格
  • $ -字符串結尾

C#:

var reg = @"^(?=.{20}$)[a-zA-Z0-9]*\s*$";

暫無
暫無

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

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