簡體   English   中英

使用正則表達式的ActionScript 3過濾器

[英]Actionscript 3 filter using regex

我試圖做一個過濾器(用戶輸入一個字符串,然后對照名稱列表檢查該字符串,只顯示包含該字符串的名稱)。 我在使用正則表達式時遇到很多麻煩,要么匹配整個字符串,要么幾乎不匹配任何字符串。

這個想法是:

var r:RegExp = new RegExp(filterRequest, "regex");
list.name.match(r);

我努力了:

var r:RegExp = new RegExp(filterRequest, "i"); //matches a-z and A-Z but no special ()*&^%$#@! characters

我已經嘗試過將標志和轉義字符組合在一起,但是都無法正常工作。 任何建議都值得贊賞-我也不會介意比糟糕的AS3 文檔更好的解釋。 我也在讀這本書,並且已經讀過 這是as3中的更多字符文檔

RegExp(filterRequest, "i");的最大問題RegExp(filterRequest, "i"); 是它會返回()匹配項,其中字符串可能是hello (text)但不是()字符串。 它還與()*$^\\(|.匹配,但是許多名稱不使用任何這些字符。

模式編輯:

"\S\s" // any character except white space and only white space (every character?)

我用自己的轉義版本替換了每個特殊字符,以解決問題。 我沒有逃脫. 因為在過濾器中將任何字符匹配用作通配符非常有用:

            filterRequest= filterRequest.replace(/\\/g, "\\\\");
            filterRequest= filterRequest.replace(/\(/g, "\\(");
            filterRequest= filterRequest.replace(/\)/g, "\\)");
            filterRequest= filterRequest.replace(/\^/g, "\\^");
            filterRequest= filterRequest.replace(/\$/g, "\\$");
            filterRequest= filterRequest.replace(/\|/g, "\\|");
            filterRequest= filterRequest.replace(/\?/g, "\\|?");
            filterRequest= filterRequest.replace(/\*/g, "\\*");
            filterRequest= filterRequest.replace(/\+/g, "\\+");
            filterRequest= filterRequest.replace(/\[/g, "\\[");
            filterRequest= filterRequest.replace(/\{/g, "\\{");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM