2014-07-07 174 views
5

變得有點粘(!正則表達式是不是我的強項在所有) - 我需要將驗證對任何字符串僅包含數字的表達和字母,但必須至少有一個(大寫和小寫可互換和允許)。它不能包含特殊字符或空格。正則表達式:必須至少有一個數字和字母,但沒有其它字符/空格

做一些以前的研究,我發現這一點,但它並不排除空白,儘管我嘗試這樣做,我不能修改它排除的空格和特殊字符:

^.*(?=.*\d)(?=.*[a-zA-Z]).*$ 

需要串的一些例子驗證:

  • ieoEon43
  • 43ifsiojfdfs
  • 6I
  • ijf943kNFSfsf

任何幫助將不勝感激!如果它很重要我正在JavaScript中運行這些表達式。

回答

6

試試這個:

/^(?=.*[a-z])(?=.*\d)[a-z\d]+$/i 

Regex101 Demo

說明:

Regular expression visualization

Debuggex Demo

編輯:固定規格ial字符問題。

+0

感謝 - 這是幫助與白色空間 - 但它似乎仍然接受特殊字符(即:fdfjf4343FFsk3£3%£3「&*(*&*)通過) – trvo

+0

對不起,錯過了特殊第一次通過的字符指向 –

+0

完美 - 謝謝! – trvo

-4

㈣做了基於我從你的問題理解regxr 1.0的演示。

如果按照這個鏈接,您可以看到演示自己: Regexr demo

更新: 的正則表達式是: /^([a-z]+[0-9]+|[0-9]+[a-z]+)$/

你可以把它的情況下在敏感: /^([a-z]+[0-9]+|[0-9]+[a-z]+)$/i

+0

這驗證了'a',它不包含數字。 –

2

另一個嘗試樂趣和榮耀! (這是短!)

^([a-z]+\d+|\d+[a-z]+)\w*$ 

Regular expression visualization

Debuggex Demo

EDIT3:

做了一個小的修復和它現在DOUBLE對方的回答的速度!

JSPERF

+0

不錯的想法,但它可能會失敗的字符串開始和結束相同的字符類('1a1'或'a1a')。 –

+0

@TimPietzcker固定,我希望! – Mosho

+1

好多了(雖然'\ w'也匹配'_'):) –

相關問題