請在下面找到我的查詢。正則表達式 - 兩個字符如何匹配(MySql)
SELECT * FROM demoTable WHERE C_APPLICATION_REF_NO REGEXP '[A-Z]{1}[0-9]{0,14}';
爲什麼我收到這有兩個人物,而我正在匹配只有一個字符和其他人是數字結果。
如何修改我的正則表達式的表達,這樣我只能取一個字符,其它的是數字。
請在下面找到我的查詢。正則表達式 - 兩個字符如何匹配(MySql)
SELECT * FROM demoTable WHERE C_APPLICATION_REF_NO REGEXP '[A-Z]{1}[0-9]{0,14}';
爲什麼我收到這有兩個人物,而我正在匹配只有一個字符和其他人是數字結果。
如何修改我的正則表達式的表達,這樣我只能取一個字符,其它的是數字。
原因是你的正則表達式並沒有錨定到字符串的開始/結尾,因此也返回了部分匹配。
使用
REGEXP '^[A-Z][0-9]{0,14}$'
{1}
是多餘的。
我也試過這個。 [A-Z] [0-9] {0,14}。無論如何得到了原因。 –
如果我從正則表達式中刪除結尾($)它再次匹配兩個字符。任何理由?這一次看起來很好,沒有結束的字符串。就像剛開始時一樣,下一個字符就是數字。 @WiktorStribiżew –
'$'是字符串定位符的結尾,如果刪除它,模式會在'AB'中找到匹配'A',因爲[0-9] {0,14}'允許匹配空字符串(零數字)。你必須在這裏使用錨點。 –
此查詢應該有效。
SELECT * FROM demoTable WHERE C_APPLICATION_REF_NO REGEXP '^[A-Z]{1}[0-9]{0,14}$';
當然,這正是我在我的答案中已經提出的建議。 –
這可以幫助您:
var patt =/^[A-Z]{1,}[0-9]{0,14}$/g;
或者
var patt =/^[A-Z][0-9]{0,14}$/g;
你匹配,其中一個字符後面跟着零到14號的所有記錄。但你永遠不會說這個人物不應該是別的字符 – Jens