开发者

Difficult Regexp

I need a regexp which does the following: Heres the name of an HTML input field:

lm[0][ti]

I need to find the basic name ("lm"). Only if the name contains brackets I need to find the string in the second brackets ("ti").

To get it in portions is easy with the following regexp开发者_JAVA技巧:

([a-zA-Z\d_]+)\[?([0-9]*)\]?\[?([a-zA_Z\d_]+)\]?

It matches all the portions I need.

Array
(
    [0] => lm[0][ti]
    [1] => lm
    [2] => 0
    [3] => ti
)

But if the HTML input name was just "lm", using this regexp I cannot determine that item #4 in the array is a valid name. The array would look like this:

Array
(
    [0] => lm
    [1] => l
    [2] => 
    [3] => m
)

"m" is not valid for me, I'd like to get this array:

Array
(
    [0] => lm
    [1] => 
    [2] => 
    [3] => 
)

or this

Array
(
    [0] => lm
)

You can test the regexp here: http://regexp-tester.mediacix.de/exp/regex/

Thanks for support in finding the right regexp...


Try this:

(\w+)(?:\[(\d+)\])?(?:\[(\w+)\])?

Input:

lm[0][ti]

Output:

Difficult Regexp

Input:

lm

Output:

Difficult Regexp

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜