#1335: Refine #1283 to allow extraction of multiple subpatterns in regex
validator
-------------------------+--------------------------------------------------
Reporter: david | Owner: david
Type: enhancement | Status: new
Priority: normal | Milestone: 1.0.4
Component: validation | Version: 1.0.4RC1
Severity: normal | Keywords:
Has_patch: 0 |
-------------------------+--------------------------------------------------
Comment(by david):
Examples:
{{{
#!xml
<validator class="regex">
<argument>username</argument>
<ae:parameter
name="pattern">#^\s*(?'localpart'.+?)(@yourcompany\.com)?\s*$#u</ae:parameter>
<ae:parameter name="export">
<ae:parameter name="localpart">user</ae:parameter>
</ae:parameter>
</validator>
}}}
To overwrite the input:
{{{
#!xml
<validator class="regex">
<argument>username</argument>
<ae:parameter
name="pattern">#^\s*(?'localpart'.+?)(@yourcompany\.com)?\s*$#u</ae:parameter>
<ae:parameter name="export">
<ae:parameter name="localpart">username</ae:parameter>
</ae:parameter>
</validator>
}}}
To export two subpatterns:
{{{
#!xml
<validator class="regex">
<argument>username</argument>
<ae:parameter
name="pattern">#^(?'startdate'\d{4}/\d{2}/\d{2})\s*-\s*(?'enddate'\d{4}/\d{2}/\d{2})$#u</ae:parameter>
<ae:parameter name="export">
<ae:parameter name="startdate">startdate</ae:parameter>
<ae:parameter name="enddate">enddate</ae:parameter>
</ae:parameter>
</validator>
}}}
To export only the matched part of the input (as you can see, numbered
subpattern identifiers work as well):
{{{
#!xml
<validator class="regex">
<argument>datetime</argument>
<ae:parameter name="pattern">#^\d{4}-\d{2}-\d{2}#u</ae:parameter>
<ae:parameter name="export">
<!-- will export only, $matches[0], i.e. the YYYY-MM-DD part, even if
the value was something like 2010-12-19T02:39:21, as the pattern isn't
anchored -->
<ae:parameter name="0">date</ae:parameter>
</ae:parameter>
</validator>
}}}
--
Ticket URL: <http://trac.agavi.org/ticket/1335#comment:1>
Agavi <http://www.agavi.org/>
An MVC Framework for PHP5
_______________________________________________
Agavi Tickets Mailing List
[email protected]
http://lists.agavi.org/mailman/listinfo/tickets