美好的一天堆栈溢出。

我是使用正则表达式的菜鸟,这是我的问题 - 如果密码包含 4 个连续字符,我需要检查密码。到目前为止,我刚刚介绍的是关于数字的。这是我的正则表达式:

升序数字 - ^.?(?:0123|1234|2345|3456|4567|5678|6789).$

降序数字 - ^.?(?:9876|8765|7654|6543|5432|4321|3210).$

这仅适用于数字。我知道这在正则表达式中已经是一种矫枉过正,所以我不想用字母来做。如果我这样做,那就太矫枉过正了。

abcdblah//true 因为 abcd

helobcde//true 因为 bcde

dcbablah//因为dcba是真的

heloedcb//true 因为 edcb

任何帮助将不胜感激。感谢堆栈溢出。

最佳答案

这是一个不使用正则表达式的想法:
所有字符都有 ansi 值并且通常是连续的。所以 abcd 应该让我们说以下 ansi 值:64,65,66,67

伪代码:

for (i=string.start;i<string.end-4;i++) {
   check=string.substring(i,4);
   c1=check.substring(0,1);
   c2=check.substring(1,1);
   c3=check.substring(2,1);
   c4=check.substring(3,1);
   if (c1.ansival==c2.ansival+1 && c2.ansival==c3.ansival+1 && c3.ansival==c4.ansival+1) {
      return false;
   } else {
      return true;
   }
}

也以相反的顺序重复 (c1.ansival+1==c2.ansival) 以降序

关于java - 检查一个字符串是否有四个连续的字母升序或降序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12493931/

10-12 20:03