美好的一天堆栈溢出。
我是使用正则表达式的菜鸟,这是我的问题 - 如果密码包含 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/