Невозможно использовать RegEx, о котором я знаю, но вот наивный функциональный подход.
Сначала прокрутите строку и сравните каждый символ с двумя следующими символами, добавив +1 и +2 к текущему индексу и соответствующим образом сопоставлять.
Во-вторых, повторите цикл и сравните проверки следующих двух символов с текущим символом, чтобы увидеть, являются ли они последовательными.
Если обе петли не могут найти последовательные символы, функция возвращает true, в противном случае возвращает false.
Первые четыре возвращают false (fail), а последние три возвращают true (pass ).
function test(s) {
// Check for sequential numerical characters
for(var i in s)
if (+s[+i+1] == +s[i]+1 &&
+s[+i+2] == +s[i]+2) return false;
// Check for sequential alphabetical characters
for(var i in s)
if (String.fromCharCode(s.charCodeAt(i)+1) == s[+i+1] &&
String.fromCharCode(s.charCodeAt(i)+2) == s[+i+2]) return false;
return true;
}
// For demo purposes only
var tests = [
'efg123!$',
'abcd567%',
'xyz789^&',
'#hijk23456',
'ryiiu562@',
'erty745#',
'gjnfl45566^'
], sep = '\t\u2192 ', out = ['Fail','Pass'], eol = '<br>';
document.write('<pre>');
for(var i in tests) document.write(tests[i] + sep + out[+test(tests[i])] + eol);
document.write('</pre>');
Я мог бы быть провален для этого, но если Вы действительно хотите записать свою собственную платформу, я говорю, идут для него, потому что Вы будете много учиться на опыте. Другие платформы, упомянутые здесь, являются большими и протестированы, и Вы не приняли бы плохое решение с помощью них, но это - выбор.
Прежде, чем начать писать Вашу платформу, посмотрите на другие платформы (в их синтаксисе, структуре каталогов, назвав схему, шаблоны разработки, и т.д.) и попытайтесь выяснить, почему они сделали то, что они сделали и что, во всяком случае, Вы сделаете по-другому. Испытайте несколько учебных руководств и играйте с их кодом, сделайте несколько демонстрационных приложений. Если после выполнения этого Вы не любите использовать их, то идете вперед и начинаете планировать свою платформу, сохраняя то, что работало и улучшение, что не сделало.
, Если бы Вы действительно решаете к самокрутке, вот несколько вещей, которые я рекомендовал бы на основе своего собственного опыта:
Я предполагаю, что много разработчиков PHP следовало за подобным маршрутом к моему: маленькие сценарии-> процедурный / встроенный код-> возможно взгляд на шаблонную обработку-> ООП-> затем платформа. Я думаю, что разработчику PHP может быть довольно свойственно "вырасти" с PHP, изучив шаблоны разработки для соответствия функциям, доступным текущей версии.
MVC является наиболее часто используемым шаблоном разработки в популярных платформах, используемых сегодня. CakePHP является моей предпочтительной платформой, хотя Симфония и Пехлеви очень популярен также †“, определенно стоит испытать некоторых, и это скоро станет очевидным, с которым Вы чувствуете себя больше всего комфортно.
Для большинства проектов (где быстрая разработка и портативный код являются приоритетами) я использую Пирог, однако для приложений легкого веса (один, я разработал, недавно был Хороший Baad), что Вы хотели бы работать быстро (на низких аппаратных средствах спецификации) и не нуждаетесь в объеме/весе, добавленном функциональностью одной из больших платформ, я рекомендую читать статью Rasmus Lerdorf о его Никакая Платформа платформа PHP MVC .
В основном, если Вы после истинного объектно-ориентированного языка, который поощряет красивый код и лучшие методы дизайна, PHP всегда собирается проиграть подобным Ruby Python и C#. Но, PHP имеет свои преимущества, например, никакую потребность в языке шаблонной обработки (это - одно), PHP может работать очень быстро и дешево и не нуждается в весе большой платформы для всех приложений.
я поощрил бы принимать шаблон разработки, который берет управляемость шаблона разработки как MVC, и объедините его с преимуществами PHP.
Я должен согласиться с вышеупомянутыми плакатами. Если Вы не используете платформу при программировании в PHP, Вы действительно программируете руками, связанными за спиной. Я лично рекомендую CodeIgniter. Это - самая быстрая платформа вокруг, это очень легко изучить и имеет очень активное сообщество. На все Ваши вопросы ответит платформа:
* How your folders are designed
CodeIgniter (или любая платформа в этом отношении) разделяет Вашу логику на представления, модели, и контроллеры, каждого с их собственной папкой.
* Do you have a standard way of dealing with CRUD, pagination, or any other common tasks?
Ки имеет библиотеку разбиения на страницы, и он имеет сторонние библиотеки как DataMapper для обертывания Ваших вызовов CRUD объектно-ориентированным способом (ORM).
* What are ways in which you can make your code more elegant?
разделение модели, представление и контроллер делают для очень изящного кода.
(Эти 2 вопроса я не ответил, в значительной степени подразумеваются при использовании платформы)
я объяснил большую часть своей методологии PHP здесь .
, но в наше время, я просто использую Django везде, я могу.
Я использую Платформу Зенда, которая в значительной степени определяет расположение папки и ООП (парадигма MVC). Для общих задач такой что касается разбиения на страницы в качестве примера я использую Zend_Paginator
(моя образцовая реализация классов Zend_Paginator_Adapter_Interface
) для проверки, которую я использую Zend_Validate
классы и т.д., Благодаря которым я могу полностью сконцентрироваться на бизнес-логике вместо изобретения велосипед.
Я начал с присяжный острослов механизм шаблонной обработки, когда я сначала устал от смешивания кода и HTML. После взламывания некоторое время, я понял, что запись моей собственной платформы просто копирует работу.
я сделал несколько проектов с Joomla, который является действительно CMS, но он дает клиентам большой контроль содержанием.
В конечном счете я обосновался на использовании реальной платформы для моих проектов. Я использую симфония , который вдохновлен направляющими и очень хорошо документируется, но я услышал cakePHP и , ZendFramework также очень хорош.
Используя Платформа Зенда и Доктрина , моя структура папок обычно похожа на это:
root
app
config (db config, routing config, misc config)
doctrine (fixtures, migrations, generated stuff, etc)
lib
logs
models (doctrine models)
modules (zend mvc modules)
bootstrap.php
docs (db diagrams, specs, coding standards, various docs)
pub (web root)
tests
tools (console tools, i.e. doctrine-cli)
vendor (zend and doctrine libraries, preferably as svn-externals)
Я бездельничал записи моего собственного материала некоторое время теперь, и каждый раз я никогда не могу находить время для окончания его полностью, потому что я застреваю на чем-то.
И затем прибывает часть, куда я прихожу к реализации того, делаю ли я что-то правильно.
И как таковой я разочаровался в записи моего собственного движения с фаворитом толпы: Пехлеви.
я посмотрел на других, но кажется, что Пехлеви был вокруг некоторое время, и они знают свои вещи.
MVC является также способом, которым я продвигаюсь с чем-либо, что я пишу теперь.
Я почти чувствую себя подобно побитому рекорду, но я рекомендовал бы смотреть на некоторые общие основы по двум причинам:
Разговор об использовании платформы, которая может быть легко расширена, у меня был очень положительный опыт с Платформой Зенда. Это связно, и все же слабо связанная структура позволяет быстро и легко расширить любой существующий компонент, и вся платформа разработана на основе идеи, что необходимо будет записать собственному помощнику и сменным классам для добавления к ее полной функциональности.
я нашел, что Платформа Зенда так абсолютно гибка, что я выполняю единственный веб-сайт как Платформу Зенда части MVC и разделяю мою старую дрянную платформу и еще более старый более дрянной код, который я не получил для перезаписи все же. На самом деле, потому что во время нашего переписывать мы нашли одну страницу, которая выполнила неприемлемо медленное использование старой платформы, я переключил единственную страницу для выполнения под архитектурой Платформы Зенда.
Для ответа на некоторые вопросы я рекомендовал бы изучить Шаблоны Архитектуры приложений для предприятия Martin Fowler. Он обеспечивает большое ценное понимание того, как решить много этих типичных проблем как то, как создать слой взаимодействия базы данных в Вашем приложении. Fowler также затрагивает темы как Размещенный на первой полосе Контроллер и MVC.