2010-01-28 12 views
0

是否可以用正則表達式來做這樣的事情:編碼和解碼一個數字?這是可能的正則表達式:編碼/加擾一個ID?

例如,我想編號爲15123(實際上代表端口號在我的情況下)爲用戶無用的東西,例如看似隨機的字符串,如c95Dd7!7。然後解碼。

我想用正則表達式來做這件事,因爲我需要URL重寫的解碼ID。

我知道javascript打包工具大致相同...但我不知道從哪裏開始。或者是否有我的問題的任何開箱即用的例子或解決方案?

謝謝!

+0

正則表達式只能*描述*字符序列但不能代替它。但是您可以使用正則表達式來搜索序列,然後替換它們。 – Gumbo 2010-01-28 15:04:04

回答

1

什麼史蒂夫B.提到一起去。

我的想法是做一些簡單的編碼,因爲它只是看起來你想做一個簡單的用戶在黑暗的想法。

也許扭轉字節,並輸出到一個字符串?應該是相當不可讀的,但更容易轉換。

+0

是的,這可能是我正在尋找的。任何線索如何實現這一目標?我真的不是RegEx的專家... – 2010-01-28 15:01:30

+0

@Gerrie,對不起,字節的想法只會在代碼中起作用。這不是RegEx設計的目的。它只做模式匹配。如果您僅限RegEx,那麼@Steve Wortham已經提出了我唯一的想法。 – 2010-01-28 17:25:47

1

您將無法使用正則表達式來做到這一點。根據使用正則表達式找到的匹配,您可以執行splitreplace操作。但是這要求你可以直接訪問正則表達式類(我假設你基於你以前的問題與.NET一起工作)。即便如此,這是對數據進行編碼,加擾或加密的糟糕方式。

我建議對稱加密算法。我使用最多的是Rijndael。有人寫了wrapper class使Rijndael加密非常容易。

更新: 這是一個非常粗糙的方法。再次,正則表達式非常不適合這種事情。但是你可以做這樣的事情,如果你只是想轉移的數字順序:

正則表達式:

(\d)(\d)(\d)(\d)(\d) 

替換爲:

$1$4$3$5$2 

基本上是什麼做的是它記錄了每個數字(\ d)分組。然後,替換符號允許您通過其編號標識符訪問每個組(第一組爲$ 1,第二組爲$ 2,依此類推)。

  • 12345將成爲14352
  • 15123將成爲12135

Here it is in action.

+0

我不需要加密,只是一些簡單的加擾就足夠了。 – 2010-01-28 15:04:27

+0

@Gerrie - 好的,我更新了答案。這是一個粗略的解決方案,但也許會有所幫助。 – 2010-01-28 17:05:35

0

由於正則表達式是真正的意思匹配範圍,並且涵蓋多個匹配其他國家,它並不真正適合可逆字符串轉換。我認爲用正則表達式可以得到最接近的字符< - >字符映射,當然這在其他方面要容易得多。

有很多加密的其他方式,爲什麼不使用一些更常見?

+0

正則表達式是一項要求,因爲我需要將URL分解爲捕獲組,以便爲​​我的URL重寫邏輯創建反向引用。 – 2010-01-28 15:02:22

相關問題