понедельник, 28 ноября 2016 г.

Анимация

Возьмите за основу любой учебник по близкому вам иностранному языку и "технологизируйте" какой-либо пример или часть объяснения, создав анимацию в формате GIF

вторник, 15 ноября 2016 г.

RegExp

Регулярные выражения в JS

Задание: 
Разработать RegExp позволяющее определить валидность строки, параметры валидности:
Строка должна начинаться с 0 или 1, и состоять из последовательности трех или четырех 0 и 1, продолжение строки может состоять из любых символов.

Примеры:
101 - Валидна
1010 - Валидна
10100 - Не валидна
101-101 - Валидна
2111 - Не валидна

Был разработан следующий RegExp:
^[10]{3,4}([^10]+.*|[^10]*)$

Проверить правильность RegExp можно используя INPUT расположенный ниже, который окрашиваться в красный или зеленый цвет в зависимости от валидности введенной строки.


Код:

   <input type="text" id="Input" value="101" oninput="InputChange(event)">  
   
   <script>
     function IsValid(s)
     {
       return /^[10]{3,4}([^10]+.*|[^10]*)$/.test(s);
     }
     
     function InputChange(event)
     {
       if (IsValid(event.target.value))
         event.target.style.backgroundColor = 'green';
       else
         event.target.style.backgroundColor = 'red';
     }
     
     document.getElementById('Input').dispatchEvent(new Event('input'));
   </script> 

 

Аналогичная программа на ObjectPascal(Delphi):

Разметка формы:
object RegExpForm: TRegExpForm
  Left = 0
  Top = 0
  Caption = 'RegExpForm'
  ClientHeight = 53
  ClientWidth = 253
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  DesignSize = (
    253
    53)
  PixelsPerInch = 96
  TextHeight = 13
  object Input: TLabeledEdit
    Left = 8
    Top = 24
    Width = 237
    Height = 21
    Anchors = [akLeft, akRight, akBottom]
    AutoSelect = False
    Ctl3D = True
    EditLabel.Width = 26
    EditLabel.Height = 13
    EditLabel.Caption = 'Input'
    ParentCtl3D = False
    TabOrder = 0
    Text = '101'
    OnChange = InputChange
  end
end

Код:

unit Main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, System.UITypes;

type
  TRegExpForm = class(TForm)
    Input: TLabeledEdit;
    procedure InputChange(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  RegExpForm: TRegExpForm;

implementation

{$R *.dfm}

uses
  System.RegularExpressions;

function IsValid(S: string): Boolean;
begin
  Result := TRegEx.IsMatch(S, '^[10]{3,4}([^10]+.*|[^10]*)$');
end;

procedure TRegExpForm.FormCreate(Sender: TObject);
begin
  InputChange(Input);
end;

procedure TRegExpForm.InputChange(Sender: TObject);
begin
  if IsValid(TEdit(Sender).Text) then
    TEdit(Sender).Color := TColors.Lightgreen
  else
    TEdit(Sender).Color := TColors.Lightcoral;
end;

end.

Скриншоты работы:
Репозиторий программы, и скомпилированный EXE файл: https://github.com/AnotherStudent/RegExpValidationSample