php.lv forumi: Palīdzība RegExp - php.lv forumi

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Palīdzība RegExp Neizprotu, ka te notiek...

#1 User is offline   NBS 

  • Daudzsološais profiņš
  • PipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 198
  • Joined: 2004.11.04

Posted 2009.01.27 14:23

Sveiki, man ir šāds, piemērs, ko man palūdza pārveidot, bet man ne jausmas, kā viņš īsti un ko pārbauda.
Sekojoši kods ir šīs:

d0128 = '([012][1-8]|[01]9|[12]0)(0\\d|1[012])\\d{2}';
d3031 = '3(0(0[13-9]|1[012])|1(0[13578]|1[02]))\\d{2}';
d29 = '29(02([02468][048]|[13579][26])|(0[13-9]|1[012])\\d{2})';
reg = new RegExp('^(('+ d0128 +')|('+ d3031 +')|('+ d29 +'))-[01]\\d{4}$');

Vai kāds man varētu, lūdzu, iztulkot, ko pārbauda d29, d3031, d0128.
Es būtu ļoti pateicīgs, paldies.

#2 User is offline   bubu 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Administratori
  • Posts: 9,196
  • Joined: 2004.03.16

Posted 2009.01.27 14:29

hm, toč izskatās kā pēc manis raksīta regexpa personas koda pārbaudei gadus 6 atpakaļ: http://home.lanet.lv...04/tt1/md7.html
   <script>
// datumi kuros ir 01 liidz 28 datums
	 var datums0128 = "([012][1-8]|[01]9|[12]0)(0\\d|1[012])\\d{2}";
// datumi kuros ir 30 liidz 31 datums
	 var datums3031 = "3(0(0[13-9]|1[012])|1(0[13578]|1[02]))\\d{2}";
// datumi kuros ir 29 datums
	 var datums29 = "29(02([02468][048]|[13579][26])|(0[13-9]|1[012])\\d{2})";
// saliekam visu kopaa
	 var regularPK = new RegExp("^((" + datums0128 + ")|(" + datums3031 + ")|(" + datums29 + "))-[12]\\d{4}$");


#3 User is offline   NBS 

  • Daudzsološais profiņš
  • PipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 198
  • Joined: 2004.11.04

Posted 2009.01.27 14:32

Lūdzu nevajag taisīt bezjēdzīgas QUOTEs

Liels paldies, nezinu vai esi to rakstījis vai nē, bet vismaz es točna neesmu.
Ņja, izrādās man tas RegExp pat īsti nav vajadzīgs, jo vajag pārbaudīt personas kodu.
Neredzu nekādu sakarību ar šo RegExp.

#4 User is offline   rpr 

  • Daudzsološais profiņš
  • PipPipPip
  • Group: Reģistrētie lietotāji
  • Posts: 519
  • Joined: 2005.09.01

Posted 2009.01.28 10:40

	/**
	 * check persons code
	 * @var cPcode string LV citizen person's code
	 * @return boolean
	 */
	function PCodeCheck($cPCode)
	{
		$cPCode = str_replace("-", "", $cPCode);
		
		if (!preg_match("/^\d{11}$/", $cPCode))
			return false;
			
		$nCheckSum = 0;
		
		$aCheck = array(1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
		
		for ($i=0; $i<10; $i++ )
		{
			$nCheckSum += intval($cPCode[$i]) * $aCheck[$i];
		}
		
		return ((1101 - $nCheckSum) % 11)==substr($cPCode, -1);
	}


#5 User is offline   bubu 

  • Koda dievs
  • PipPipPipPipPip
  • Group: Administratori
  • Posts: 9,196
  • Joined: 2004.03.16

Posted 2009.01.28 11:45

Aha, un tavs kods personas kodu 222222-22221 uzskatīs par pareizu. Veiksmi atrast kādu, kurš dzimis 22. mēnesī :)

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic