1 2 3 4 5 6 7 8 9 10 11 12 13
#!/usr/bin/perl use strict; use warnings; use diagnostics; use JSON 2.59; my %var = ( regex => qr{[^a-z]}i, ); print 'Test '.('FOO1' =~ $var{regex} ? 'erfolgreich' : 'fehlgeschlagen')."\n"; my $json_obj = JSON->new->latin1; $json_obj->convert_blessed(0); my $json = $json_obj->encode(\%var);
QuoteTest erfolgreich
Uncaught exception from user code:
encountered object '(?^i:[^a-z])', but neither allow_blessed nor convert_blessed settings are enabled at test.pl line 13.
JSON::PP::encode_error('encountered object \'(?^i:[^a-z])\', but neither allow_blesse...') called at C:/strawberry/perl/lib/JSON/PP.pm line 340
JSON::PP::object_to_json('JSON=HASH(0x12de4dc)', 'Regexp=REGEXP(0x52a8ac)') called at C:/strawberry/perl/lib/JSON/PP.pm line 368
JSON::PP::hash_to_json('JSON=HASH(0x12de4dc)', 'HASH(0x12deb4c)') called at C:/strawberry/perl/lib/JSON/PP.pm line 312
JSON::PP::object_to_json('JSON=HASH(0x12de4dc)', 'HASH(0x12deb4c)') called at C:/strawberry/perl/lib/JSON/PP.pm line 292
JSON::PP::PP_encode_json('JSON=HASH(0x12de4dc)', 'HASH(0x12deb4c)') called at C:/strawberry/perl/lib/JSON/PP.pm line 143
JSON::PP::encode('JSON=HASH(0x12de4dc)', 'HASH(0x12deb4c)') called at test.pl line 13
Quoteconvert_blessed
$json = $json->convert_blessed([$enable])
$enabled = $json->get_convert_blessed
If $enable is true (or missing), then encode, upon encountering a blessed object, will check for the availability of the TO_JSON method on the object's class. If found, it will be called in scalar context and the resulting scalar will be encoded instead of the object.
2013-10-30T07:58:48 pqsinnvoller erscheint mir aber, gleich eine string-version der regex zu speichern statt des objekts.
2013-10-30T08:14:26 MuffiMit Anführungszeichen?
1 2 3 4 5 6 7 8 9 10 11 12
#!/usr/bin/perl use strict; use warnings; use diagnostics; use JSON 2.59; my %var = ( regex => "/[^a-z]/i", ); print 'Test '.('FOO1' =~ $var{regex} ? 'erfolgreich' : 'fehlgeschlagen')."\n"; my $json = JSON->new->latin1->encode(\%var); print "JSON: '$json'\n";
2013-10-30T08:43:52 payxAber damit ist JSON wohl nicht einverstanden ...
2013-10-30T08:27:13 bianca
2013-10-30T09:01:43 pqregex => '(?i:[^a-z])'
{"regex":"(?i:[^a-z\\.])"}
QuoteDetails zum Fehler auf der Webseite
Meldung: Ungültiges Zeichen
Zeile: 145
Zeichen: 2
Code: 0
URI: ...
2013-10-30T09:15:21 MuffiIch glaub aber das wär ein neues Thema:
Wie schreib ich JSON in eine HTML-Seite
QuoteDetails zum Fehler auf der Webseite
Meldung: Unerwarteter Quantifizierer
Zeile: 309
Zeichen: 4
Code: 0
URI: ...
2013-10-30T09:27:17 MuffiDie Hauptfrage war im Thema "Fragen zu Perl-Modulen" wie man eine Regex in JSON verpackt.
Das tut und ist erledigt.
2013-10-30T09:32:16 biancaEinfach eine in Javascript nicht nutzbare Zeichenfolge in JSON zu verpacken war selbstverständlich nicht der Anlass der Frage :)
QuoteAber ich kann gern einen neuen Thread öffnen, wenn das besser für eine Lösungsfindung ist.
2013-10-30T10:26:25 pqwas du willst, ist ein perl-regex-objekt in ein javascript-regex-objekt zu überführen. dafür musst du dir ein transfer-format ausdenken. ein einfacher string geht offensichtlich nicht, wenn javascript keine inline-modifier beherrscht.
%var = (regex => 'abc', modifier => 'i');
2013-10-30T12:45:47 MuffiÜbergib die Modifier halt als eigenen Parameter.
1 2 3 4
my $reg = qr/[^a-z]/i; $reg=~s!\(\?\^([^:]+):(.+)\)$!/$2/$1!; my %var = (reg => $reg); my $json = JSON->new->latin1->encode(\%var);
1 2
var myRe = new RegExp("[^a-z]", "i"); var myResults = myRe.exec("123cdbbdbsbz");
2013-10-30T10:18:00 GwenDragonIch weiß ja nicht wie du das Regex dann ausführst.
2013-10-30T08:41:46 biancaVerwendet werden soll die Regex sowohl im Javascript Code im Befehl .search()
JSON->new->encode( regex => "t.*t" );
1
2
3
4
5
6
7
8
9
10
<html>
<body>
<script>
var json = {regex: "t.*t"};
var success = 0;
if ( "tes".match( json["regex"] ) ) { success = 1; }
alert( success );
</script>
</body>
</html>