2012-04-02 9 views
1

私はこの正規表現を持っていますが、これは.Netでは動作しますが、ASPクラシックでは動作しません。それはまた上で動作しますRegExrASPクラシック正規表現は.Netとは異なる動作をします

スペースが引用符の内側でない限り、スペースをカンマで置き換えるために使用されます。

dim strSearch 
dim strPattern 
strPattern = "\s(?=(?:[^\x22]*\x22[^\x22]*\x22)*[^\x22]*\z)" '\x22 = " (dbl quotes) 

strSearch = The "quick brown" fox jumps 

strSearch = ereg_replace(strSearch, pattern, ",", true) 

response.write(strSearch) 

'Expect: The,"quick brown",fox,jumps 
'Actual: The "quick brown" fox jumps 

function ereg_replace(strOriginalString, strPattern, strReplacement, varIgnoreCase) 
    dim objRegExp : set objRegExp = new RegExp 
    with objRegExp 
    .Pattern = strPattern 
    .IgnoreCase = varIgnoreCase 
    .Global = False 
    .Multiline = False 
    end with 
    ereg_replace = objRegExp.replace(strOriginalString, strReplacement) 
    set objRegExp = nothing 
end function 

パターンをASPクラシックで使用するために変更する必要があるものは何ですか?

+0

'" \ x22 "'はスペースではありません。これは二重引用符です: '' '。スペースは' "\ x20" ' – kirilloid

答えて

4

私は$であることを交換してみてください、この理由は\zアンカーはASPの正規表現でサポートされていないということであるかなり確信している:

\s(?=(?:[^\x22]*\x22[^\x22]*\x22)*[^\x22]*$) 

追加情報についてVBScript’s Regular Expression Supportに、このページを参照してください。

関連する問題