2010-12-14 17 views
0

Ich versuche zu validieren, wenn eine bestimmte Firma bereits für eine Anwendung ausgewählt wurde. das companyList Format ist:Javascript regex Hilfe

60.261.420 (eine Liste von CompanyID)

I

verwendet
cID = $('#coName').val().split('::')[1]; 

nur die ID zu erhalten.

ich diese Funktion durch Leiten nenne sagen 60:

findCompany = function(value) { 
    var v = /^.+60,261,420$/.test(value); 
    alert(v); 
} 

, wenn ich genau die gleiche Zeichenfolge übergeben, ich falsch erhalten. irgendeine Hilfe?

+0

Was ist "# companyList #" hier? Mit anderen Worten, wie sieht diese Regex aus, wenn Sie eine Ansichtsquelle auf der Seite anzeigen? – Pointy

+0

wofür ist cfoutput tag? Können Sie sehen, was das Javascript in Ihrem Browser ist, nicht im Quellcode? Das Tag wird durch etwas ersetzt. –

+0

@Romario Ich vermute, es ist eine ColdFusion-Sache. – Pointy

Antwort

1

Nun, wenn Ihr Unternehmen Liste eine Liste von numerischen IDs wie das ist, müssen Sie den resultierenden regulären Ausdruck tatsächlich machen sein, die richtigen Ausdruck — wenn das ist sogar die Art, wie Sie es tun möchten.

Eine weitere Option besteht darin, einfach ein Array zu erstellen und dann auf den Wert im Array zu testen.

Als regex, obwohl, was Sie tun können, ist dies:

var companyList = [<cfoutput> whatever </cfoutput>]; // get company ID list as an array of numbers 
var companyRegex = new RegExp("^(?:" + companyList.join('|') + ")$"); 

Dann können Sie sagen:

function findCompany(id) { 
    if (companyRegex.test(id)) alert(id + " is already in the list!"); 
} 
+0

süß! companyRegEx.text (id) sollte companyRegex.test (id) lesen – CFNinja

+0

Oh ja richtig - danke. – Pointy

+0

Beachten Sie auch, dass, sobald Sie beginnen, eine ernsthafte Anzahl von Unternehmen zu bekommen, wird dies ein bisschen komisch werden. Es sollte aber bis zu ein paar hundert funktionieren, denke ich. Stellen Sie sicher, dass Sie es mit einer großen Liste von IDs versuchen, nur damit Sie wissen, was passiert! – Pointy

0

Warum nicht die Zeichenfolge in ein Array teilen, wie Sie für Ihre Tests getan haben, iterieren Sie über die Liste und prüfen Sie, ob es in ist?

Ein Regexp nur für das ist Bälle, Overhead und langsamer. Viel.

Wie auch immer, für Ihre spezielle Frage:

Sie überprüfen die Zeichenfolge "60" für /^.+60,261,420$/.

. + 60 wird natürlich nicht übereinstimmen, weil Sie mindestens ein Zeichen vor der 60 benötigen. Die Kommas auch auswerten und sind nicht in Ihrer Zeichenfolge.

Ich komme nicht ganz dahin, wo Ihre Regexp herkommt.

Warst du auf der Suche nach einer regulären ID-Liste?

-Code für das Aufspalten und die Überprüfung die Array von IDs:

findCompany = function(value) { 
    $('#coName').val().split('::').each(function(val){ 
    if(val == value) return true; 
    }); 
    return false; 
} 
+0

Ich bin auf der Suche nach einem Regexp. Ich habe versucht, eine zu erstellen, aber es ist offensichtlich nicht richtig. Die IDs kommen von einer Abfrage, dann konvertiere ich in eine Liste. Ich werde es für die Array-Suche versuchen – CFNinja

+0

'$' <- ist das jQuery? In Ihrem check-fn: '$ ('# coName') .val().split ('::'). je (function (val) {if (val == value) gibt true zurück;}); return false; '. – Kissaki

+0

Ok, es ist nicht jQuery. Was ist lib? Hat es wahrscheinlich auch jede Funktion? Wenn nicht, müssen Sie JavaScripts 'for (var val in coNameText) verwenden'. – Kissaki