正则表达式匹配以下字符

时间:2018-04-18 05:58:12

标签: regex

匹配以下模式的正则表达式

1. mrrtjjsf8907m5q29ui
2. 0?userid=y1arx6uxb1nidmz3tguv
3. bryj9itvwjmbyv3wg8ef

我正在尝试将这些值传递给另一个变量col=?([a-zA-Z0-9]{1,20})|([a-zA-Z0-9]{1,20})

它取第一个正确的值,第二个正确取值0

取而代之的是y1arx6uxb1nidmz3tguv

2 个答案:

答案 0 :(得分:0)

我认为你需要使用这个正则表达式:

[a-zA-Z](?=[A-Za-z]*\d)[a-zA-Z0-9]{1,19}

Demo

这将确保您要匹配的一堆字符仅由字母和数字构成,因此0userid不被视为匹配!

<强>替代:

但上述情况可能并未考虑有效序列可能以数字而非字母开头的情况。在这种情况下,您可以使用以下正则表达式来考虑这两种情况:

(?:[a-zA-Z](?=[A-Za-z]*\d)|\d(?=\d*[A-Za-z]))[a-zA-Z0-9]{1,19}

Demo 2

答案 1 :(得分:0)

看来你不想在等号=之前匹配任何东西。您可以使用行终结符$来确保它与您的字符匹配,并停止任何不匹配的字符。

([a-zA-Z0-9]{1,20})$

DEMO