[英]RegEx Matching and Separation Using JavaScript
我正在使用一個文本值可能為以下格式之一的系統:
在大多數情況下,如果數字前面或后面有一個字母,那么只會有一個字母,但這並不能保證。
我試圖創建一些正則表達式來獲取前面的文本,數字和結尾的文本。 但是,我所能提出的最好成績並不理想,因此我需要根據比賽結果進一步細分比賽。 這三個不同的值中的每一個都必須放入數據庫中自己的存儲桶中。
我擅長找出僅數字的匹配項,但是它試圖打破我似乎無法正確獲取的混合值,並且似乎也無法獲得僅文本的匹配項。 我是否最好先匹配字母數字對,然后抓住我想要的零件?
目前,這些是我想出的正則表達式:
var regex0 = /[A-z]+?![0-9]/;
var regex1 = /[A-z]+[0-9]+/;
var regex2 = /[0-9]+/;
var regex3 = /[0-9]+[A-z]+/;
對於regex1
和regex3
,我進行額外的比賽以僅從比賽中提取文本沒有問題,但我希望有一種方法可以一次完成所有工作。
[AZ]{4}
匹配ABCD
[AZ]\\d{4}
與F1000
匹配 \\d{4}
匹配1000
\\d{4}[AZ]
匹配1000A
[AZ]\\d{4}[AZ]
匹配F1000A
前面使用合格字符作為偽錨點。
其他部分是可選的,但是會匹配某些內容,因為它是合格的。
(?=[A-Za-z\\d])([A-Za-z]*)(\\d*)([A-Za-z]*)
展開式
(?= [A-Za-z\d] ) # Assert a qualified character is ahead
( [A-Za-z]* ) # (1)
( \d* ) # (2)
( [A-Za-z]* ) # (3)
火柴
** Grp 1 - ( pos 1 , len 4 )
ABCD
** Grp 2 - ( pos 5 , len 0 ) EMPTY
** Grp 3 - ( pos 5 , len 0 ) EMPTY
-------------
** Grp 1 - ( pos 8 , len 1 )
F
** Grp 2 - ( pos 9 , len 4 )
1000
** Grp 3 - ( pos 13 , len 0 ) EMPTY
-------------
** Grp 1 - ( pos 16 , len 0 ) EMPTY
** Grp 2 - ( pos 16 , len 4 )
1000
** Grp 3 - ( pos 20 , len 0 ) EMPTY
-------------
** Grp 1 - ( pos 23 , len 0 ) EMPTY
** Grp 2 - ( pos 23 , len 4 )
1000
** Grp 3 - ( pos 27 , len 1 )
A
-------------
** Grp 1 - ( pos 31 , len 1 )
F
** Grp 2 - ( pos 32 , len 4 )
1000
** Grp 3 - ( pos 36 , len 1 )
A
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.