webForumDet fria alternativet

regexp hjälp

11 svar · 404 visningar · startad av Smultron

SmultronMedlem sedan juli 2002431 inlägg
#1

Jag behvöer hjälp att skapa en regexp som tillåter
a-ö
A-Ö
0-9
_ ! . ? * - &
mellanslag

någon som kan hjälpa mig, mitt nuvarande ser ut såhär men verkar inte fungera korrekt o vill vetav ad jag gör för fel...

var regexp = /[^-\w!?*_\.,;]/;
daniiMedlem sedan sep. 2004159 inlägg
#2

"/^[a-zåäöÅÄÖ0-9_!.?*-& ]$/i"

dectgapMedlem sedan sep. 20021 542 inlägg
#3

Jag brukar söka efter otillåtna tecken, för att se om strängen är ok.

var regexp = /[^-\da-zåäö_!.?*& ]/i;

if(!regexp.test(str)) {
   // str är en godkänd sträng
} else {
  // str innehåller något otillåtet tecken
}
daniiMedlem sedan sep. 2004159 inlägg
#4

dectgap skrev:

Jag brukar söka efter otillåtna tecken, för att se om strängen är ok.
var regexp = /[^-\da-zåäö_!.?*& ]/i;

if(!regexp.test(str)) {
// str är en godkänd sträng
} else {
// str innehåller något otillåtet tecken
}

Han vill att tecknen ska tillåtas. Inte tvärtom.

//Tog bort kod-taggen så att funkar

dectgapMedlem sedan sep. 20021 542 inlägg
#5

Jag har dubbel negation, både i regexpen och i if-satsen.
"Om det inte finns ett tecken som inte tillåts, så är strängen ok."

daniiMedlem sedan sep. 2004159 inlägg
#6

dectgap skrev:

Jag har dubbel negation, både i regexpen och i if-satsen.
"Om det inte finns ett tecken som inte tillåts, så är strängen ok."

Oj...missade utropstecknet. En fråga dock. Funkar i på åäö? Förstår den att åäö toupper = ÅÄÖ?

dectgapMedlem sedan sep. 20021 542 inlägg
#7

danii skrev:

dectgap skrev:

Jag har dubbel negation, både i regexpen och i if-satsen.
"Om det inte finns ett tecken som inte tillåts, så är strängen ok."

Oj...missade utropstecknet. En fråga dock. Funkar i på åäö? Förstår den att åäö toupper = ÅÄÖ?

Jajamensan.

SmultronMedlem sedan juli 2002431 inlägg
#8

detta funkar men jag vill också lägga till radbrytningar, det funkar inte om jag har en radbrytning nu. eller det går som att det blir fel i min sträng då testa at t läga till \n men funkar inte

dectgapMedlem sedan sep. 20021 542 inlägg
#9

Ändra då till

var regexp = /[^-\da-zåäö_!.?*& \n]/i;
SmultronMedlem sedan juli 2002431 inlägg
#10

nej det går tyvär inte för så fort jag har en radbrytning med i min text blir det fel

MAgeMedlem sedan apr. 200337 inlägg
#11

Nu säjer jag inte att jag greppat RegExp fullt ut än men, ".", "?" och "*" är specialtecken och ska väl skrivas med ett "\" innan? Så alltså

"/^[\w!\.\?\*-& ]+$/"

\w för "a-zA-Z0-9_"

/Jonas

dectgapMedlem sedan sep. 20021 542 inlägg
#12

MAge skrev:

Nu säjer jag inte att jag greppat RegExp fullt ut än men, ".", "?" och "*" är specialtecken och ska väl skrivas med ett "\" innan? Så alltså

"/^[\w!\.\?\*-& ]+$/"

\w för "a-zA-Z0-9_"

/Jonas

Man behöver inte escapea ? . * eller andra specialtecken om man skriver dem i en character-class.
Och visserligen innehåller \w tecknen a-zA-Z0-9_, men \w innehåller fler tecken än så, t ex ßûÿ.

Smultron skrev:

nej det går tyvär inte för så fort jag har en radbrytning med i min text blir det fel

str = "Här är en sträng med \n radbrytning.";
var regexp = /[^-\da-zåäö_!.?*&\n ]/i;

if(!regexp.test(str)) {
   alert("Strängen är godkänd.");
} else {
   alert("Strängen är INTE godkänd.");
}

Vad får du för meddelande när du testar den koden då?
Eventuellt skulle du kunna utvidga till:

var regexp = /[^-\da-zåäö_!.?*&\n\r ]/i;
Genererad på 375 ms · cache AV · v20260730165559-full.f96bc7eb