我目前有一個coldfusion的正則表達式,檢查字符串是否是字母數字。 我想多打開一段時間以允許句號和下劃線字符。我將如何修改這個以允許?Coldfusion的正則表達式問題
<cfset isValid= true/>
<cfif REFind("[^[:alnum:]]", arguments.stringToCheck, 1) GT 0>
<cfset isValid= false />
</cfif>
感謝
我目前有一個coldfusion的正則表達式,檢查字符串是否是字母數字。 我想多打開一段時間以允許句號和下劃線字符。我將如何修改這個以允許?Coldfusion的正則表達式問題
<cfset isValid= true/>
<cfif REFind("[^[:alnum:]]", arguments.stringToCheck, 1) GT 0>
<cfset isValid= false />
</cfif>
感謝
這應該這樣做。
<cfset isValidString= true/>
<cfif REFind("[^[:alnum:]_\.]", arguments.stringToCheck, 1) GT 0>
<cfset isValidString= false />
</cfif>
而且使用「的isValid」爲變量名是不是一個偉大的實踐。它是ColdFusion中的一個函數的名稱,可能會在某一天導致您的問題。
將這項工作嗎?
refind("[\w\d._]","1234abcd._")
'\ w'已經包含'\ d'和'_',並且您已經錯過了Cheeky否定該組(爲了識別無效字符串)。 – 2010-09-21 12:41:42
啊你是對的彼得。感謝您注意到這一點。 – Masterbuddha 2010-09-21 23:33:27
無需CFIF - 這裏是這樣做的一個很好的簡潔的方式:
<cfset isValidString = NOT refind('[^\w.]' , Arguments.StringToCheck)/>
或者,你可以這樣來做:
<cfset isValidString = refind('^[\w.]*$' , Arguments.StringToCheck) />
(爲了防止空字符串,將*
更改爲+
)
此方法可以使它更容易應用其他約束(例如,必須以字母等開頭),並且無論如何都是表達原始支票的稍微更直接的方式。
請注意,這裏的^
是一個意思是「行首/字符串」(其中$
爲相應結尾),more information here的錨。
個人而言,我更願意寫出a-z0-9而不是使用\ w,因爲它是一種更直觀的表示形式,但是很好的解釋。 – 2010-09-21 14:17:39
不應該是'
謝謝喬丹,我知道有些事情不太對,但顯然不是直的 - 是的,它應該是'(x EQ 0)' - 或者簡單地在NOT的前面加上'NOT',這也是更簡單/更清晰的。 – 2010-09-21 17:53:56
謝謝賈森 - 那就像一顆炸彈。至少我還可以添加額外的字符,如果需要使用\字符。 關於'isValid' - 你100%正確。它原本是'isAlphaNumeric',但我認爲這不會在這個例子的要求,因此我改變了這個例子在線沒有思考! – Cheeky 2010-09-21 08:54:27
在'.'之前你不需要\並且使用'\ w'將會包含'[A-Za-z0-9_]'並且比'[[:alnum:]]'東西更普遍,所以可以簡單地考慮改爲'[^ \ w。]'。 – 2010-09-21 12:40:41
嗨,彼得。幷包括下劃線?那麼它會是[^ \ w._]嗎? – Cheeky 2010-09-21 14:46:44