2012-01-13 30 views
0

$1値をトリミングする方法を知っている人はいますか?私が入力した場合正規表現のASPトリム文字列

' URL Replacement, www.Scirra.com 
Dim objRegExp : set objRegExp = new RegExp 
With objRegExp 
    .Pattern = "\[url\](.*)\[\/url]" 
    .IgnoreCase = True 
    .Global = True 
End With 
strMessage = objRegExp.replace(strMessage, "<a href=""$1"" rel=""nofollow"">$1</a>") 
set objRegExp = nothing 

例は、:

[url] http://www.scirra.com[/url] 

これは、それ以前に%20のunclickableリンクとしてレンダリングします。

strMessage = objRegExp.replace(strMessage, "<a href=""" & trim($1) & """ rel=""nofollow"">" & trim($1) & "</a>") 

答えて

2

\s*であなたのキャプチャグループを囲む、あなたはそれでいる間、.*を使用しないようにするパターンを変更する(あなたは[以外のすべてをキャプチャしたいか:私は何をしたいことは何かに似ていますスペース - 補完文字クラスを使用します):

.Pattern = "\[url\]\s*([^\[\s]+)\s*\[/url\]" 

(注意:文字クラスにエスケープ[ニーズ)パターンを見直し

1

が良いsolutioであることを確認していませんそのような場合。
代替手段として、
メソッドの置換RegExpオブジェクトには、パターンリビジョンの代替として使用できるコールバック機能があります。
場合によっては、より複雑なパターンを処理するためにコールバック機能が必要な場合があります。

さらに、\[url\](.*)\[\/url]の代わりに\[url\]([^[]*)\[/url\]のようなパターンを使用します。
複数のbbcodeを含む式で一致を確認すると、なぜ私は示唆するでしょう。

' URL Replacement, www.Scirra.com 

Function cb_CreateLink(sMatch, sGroup1, iMatchStartPos, sSubjectText) 
    cb_CreateLink = "<a href="""& Trim(sGroup1) &""" rel=""nofollow"">"& Trim(sGroup1) &"</a>" 
End Function 

Dim strMessage : strMessage = "[url] http://www.scirra.com[/url] [url] http://www.scirra.com[/url]" 
Dim objRegExp : set objRegExp = new RegExp 
With objRegExp 
    .Pattern = "\[url\]([^[]*)\[/url\]" 
    .IgnoreCase = True 
    .Global = True 
End With 
strMessage = objRegExp.replace(strMessage, GetRef("cb_CreateLink")) 
set objRegExp = Nothing 

Response.Write strMessage 

こと注:参照機能構造は、パターン内のグループの数に応じて、変数である

CallBackFunctionマッチ文字列、[、グループ1文字列グループ2文字列、...]、MatchStartPosition長いOriginalText文字列