是否可以用正則表達式來做這樣的事情:編碼和解碼一個數字?這是可能的正則表達式:編碼/加擾一個ID?
例如,我想編號爲15123
(實際上代表端口號在我的情況下)爲用戶無用的東西,例如看似隨機的字符串,如c95Dd7!7
。然後解碼。
我想用正則表達式來做這件事,因爲我需要URL重寫的解碼ID。
我知道javascript打包工具大致相同...但我不知道從哪裏開始。或者是否有我的問題的任何開箱即用的例子或解決方案?
謝謝!
是否可以用正則表達式來做這樣的事情:編碼和解碼一個數字?這是可能的正則表達式:編碼/加擾一個ID?
例如,我想編號爲15123
(實際上代表端口號在我的情況下)爲用戶無用的東西,例如看似隨機的字符串,如c95Dd7!7
。然後解碼。
我想用正則表達式來做這件事,因爲我需要URL重寫的解碼ID。
我知道javascript打包工具大致相同...但我不知道從哪裏開始。或者是否有我的問題的任何開箱即用的例子或解決方案?
謝謝!
什麼史蒂夫B.提到一起去。
我的想法是做一些簡單的編碼,因爲它只是看起來你想做一個簡單的用戶在黑暗的想法。
也許扭轉字節,並輸出到一個字符串?應該是相當不可讀的,但更容易轉換。
是的,這可能是我正在尋找的。任何線索如何實現這一目標?我真的不是RegEx的專家... – 2010-01-28 15:01:30
@Gerrie,對不起,字節的想法只會在代碼中起作用。這不是RegEx設計的目的。它只做模式匹配。如果您僅限RegEx,那麼@Steve Wortham已經提出了我唯一的想法。 – 2010-01-28 17:25:47
您將無法使用正則表達式來做到這一點。根據使用正則表達式找到的匹配,您可以執行split或replace操作。但是這要求你可以直接訪問正則表達式類(我假設你基於你以前的問題與.NET一起工作)。即便如此,這是對數據進行編碼,加擾或加密的糟糕方式。
我建議對稱加密算法。我使用最多的是Rijndael。有人寫了wrapper class使Rijndael加密非常容易。
更新: 這是一個非常粗糙的方法。再次,正則表達式非常不適合這種事情。但是你可以做這樣的事情,如果你只是想轉移的數字順序:
正則表達式:
(\d)(\d)(\d)(\d)(\d)
替換爲:
$1$4$3$5$2
基本上是什麼做的是它記錄了每個數字(\ d)分組。然後,替換符號允許您通過其編號標識符訪問每個組(第一組爲$ 1,第二組爲$ 2,依此類推)。
我不需要加密,只是一些簡單的加擾就足夠了。 – 2010-01-28 15:04:27
@Gerrie - 好的,我更新了答案。這是一個粗略的解決方案,但也許會有所幫助。 – 2010-01-28 17:05:35
由於正則表達式是真正的意思匹配範圍,並且涵蓋多個匹配其他國家,它並不真正適合可逆字符串轉換。我認爲用正則表達式可以得到最接近的字符< - >字符映射,當然這在其他方面要容易得多。
有很多加密的其他方式,爲什麼不使用一些更常見?
正則表達式是一項要求,因爲我需要將URL分解爲捕獲組,以便爲我的URL重寫邏輯創建反向引用。 – 2010-01-28 15:02:22
正則表達式只能*描述*字符序列但不能代替它。但是您可以使用正則表達式來搜索序列,然後替換它們。 – Gumbo 2010-01-28 15:04:04